Bonjour à tous,

je cherche un moyen d'avoir les highlights d'une recherche avec ElasticaBundle.
Voici ce que je fais côté controller :

$modelsFound = $this->container->get("fos_elastica.finder.app.model")->findHybrid($searchText, 10000);

Donc une recherche complète sur "model".

Et voici mon résultat sur Twig :

  0 => HybridResult {#9267 ▼
    #result: Result {#9196 ▼
      #_hit: array:5 [▼
        "_index" => "app"
        "_type" => "TechnologyModel"
        "_id" => "3697"
        "_score" => 0.67856324
        "_source" => array:9 [▶]
      ]
    }
    #transformed: TechnologyModel {#9293 ▶}
  }

Au niveau du hit, je n'ai pas les highlights ni les fields, comment puis je les avoir ?

D'avance merci !

1 réponse


Salut,

https://github.com/FriendsOfSymfony/FOSElasticaBundle/blob/master/Propel/ElasticaToModelTransformer.php#L81

Il faut que ton model implémente l'interface "HighlightableModelInterface" ensuite tu auras getElasticHighlights() pour récuperer les highlights.

Je ne sais pas quelle version de Elasticsearch tu utilises mais d'experience si tu veux suivre systématiquement la derniere version je te conseil de t'abstraire de FOSElasticaBundle et de plutôt utiliser ta propre implémentation en te basant systématiquement sur la dernière version de Elastica (https://github.com/ruflin/Elastica). En effet le Bundle ne suis pas systématiquement la dernière version de Elastica et donc n'est pas systématiquement compatible avec la dernière version.

Bon courage.