Comment faire correspondre le préfixe dans Elasticsearch
disons que dans mon index elasticsearch j'ai un champ appelé "points" qui contiendra une chaîne de caractères de ponctuation, les mots séparés (par exemple, "en premier.de seconde en seconde.troisième").
J'ai besoin de rechercher par exemple "en premier.deuxième" et puis obtenir toutes les entrées dont les "points" champ contient une chaîne de caractères étant exactement "en premier.deuxième" ou commençant par "en premier.la deuxième.".
J'ai un problème de compréhension de la façon dont le texte de l'interrogation des œuvres, au moins je n'ai pas été en mesure de créer une requête qui fait le travail.
source d'informationauteur Stine | 2012-08-24
Vous devez vous connecter pour publier un commentaire.
Elasticsearch a Chemin De La Hiérarchie Tokenizer qui a été créé exactement pour ces cas d'utilisation. Voici un exemple de comment le configurer pour votre index:
Ont un coup d'oeil à préfixe requêtes.
Il est aussi un moyen beaucoup plus facile, comme l'a souligné dans elasticsearch la documentation:
suffit d'utiliser:
ou depuis 0.19.9:
au lieu de:
Vous devez utiliser un commodin caractères pour faire de votre requête, quelque chose comme ceci:
plus d'exemples sur la syntaxe: http://lucene.apache.org/core/old_versioned_docs/versions/2_9_1/queryparsersyntax.html
Je cherchais une solution similaire - mais correspondant seulement un préfixe. J'ai trouvé @imtov de réponse à me faire presque là, mais pour faire un changement de commutation de la analyseurs autour de:
au lieu de
De cette façon, en ajoutant:
Ajoutera seulement ces jetons, sans stocker
first
second
third
jetons.Encore à la recherche pour
renvoie correctement la première entrée:
Pas exactement ce que vous avez demandé, mais en quelque sorte liées, donc je pense que cela pourrait aider quelqu'un.