2014-05-13 3 views
0

J'ai un catalogue de produits que j'indexe dans ElasticSearch en utilisant le client Elastica.ElasticSeach - Obtenir des mots à la fois incomplets et pluriels

Alors que la mise en œuvre de recherche, je * après les Annexer des termes de recherche tapées de sorte que lorsque l'on tape whis ou whisk il va déjà commencer à voir les résultats de la recherche pour whisky.

Mais je veux montrer des résultats pour poster quand on tape posters aussi bien.

J'ai été en mesure d'atteindre le résultat du pluriel au singulier en utilisant le filtre snowball. Mais pour que cela fonctionne, je dois supprimer *.

Ceci est incorrect car il n'y a aucun résultat à afficher jusqu'à ce qu'un mot complet soit entré.

Des idées comment je peux faire à ce sujet? Mon code d'analyse: (extrait de here)

'analysis' => array(
    'analyzer' => array(
     'indexAnalyzer' => array(
      'type' => 'custom', 
      'tokenizer' => 'whitespace', 
      'filter' => array('lowercase', 'mySnowball') 
     ), 
     'searchAnalyzer' => array(
      'type' => 'custom', 
      'tokenizer' => 'whitespace', 
      'filter' => array('lowercase', 'mySnowball') 
     ) 
    ), 
    'filter' => array(
     'mySnowball' => array(
      'type' => 'snowball', 
      'language' => 'English' 
     ) 
    ) 
) 
+0

Bump! Quelqu'un sait quelque chose? – Hitesh

Répondre

0

je suis allé avec des fonctionnalités personnalisées. Je recherche avec l'expression de recherche exacte sans *. Mon code recherche le nombre de résultats. Si c'est un mot incomplet, il retournera probablement un résultat nul. J'ajoute donc un * à la requête de résultat et fais une autre recherche. Cela rend mes résultats de suggestion automatique plus lents, mais fonctionnels.

Questions connexes