2016-05-03 2 views
0

Je dois configurer le serveur Open-search pour analyser la requête de telle sorte que toute permutation de mots dans la requête corresponde, il retourne le document.opensearchserver tokenizer pour la permutation de tous les mots dans la requête

Par exemple, En indexation d'un champ, j'ai une phrase "douleur au genou". Maintenant, si ma requête est comme "comment enlever la douleur dans le genou humain". Je veux que cette requête produise le document ayant "douleur au genou" dans le champ d'indexation. D'où mon exigence de casser la chaîne de requête comme "enlever", "douleur", "humain", "genou", "enlever la douleur", "" enlever le genou "," enlever l'homme "," douleur au genou ", « genou humain », « douleur au genou », « douleur humaine », etc.

Alors qu'il correspond à « la douleur au genou ». Yat-il un tokenizer ou un filtre qui peut me aider à y parvenir.

Répondre

1

Sélectionnez Cliquez sur l'onglet Schéma, puis cliquez sur l'onglet Analyseurs

Normalement, je modifie le TextAnalyzer et y ajoute des filtres supplémentaires. ke recherche insensible à la casse et supprime les mots d'arrêt comme "a", "an", "the". Puis, le filtre de bardeaux vous donnera les n-grammes pour faire correspondre les expressions. Le filtre de bardeau avec une taille de bardeau de 3-4 quatre mots fonctionne habituellement. Shingling crée des permutations de mots qui se chevauchent à partir du texte analysé. "Le renard brun saute haut" avec une taille de bardeau de 3 créerait analysé n-grammes de 1,2 et 3 mots. IE, 1 mot: "le", "brun", "renard", "saute", "haut". 2 mots: « le brun », « renard brun », « saute renard », « saute haut », etc.

enter image description here

+0

filtre de galets fonctionne pour la combinaison de mots consécutifs et aussi dans une direction. comme dans votre image "douleur au genou" n'est pas présent. Aussi, pouvez-vous dire quel est le nombre associé à chaque symbole (nombre entre crochets) –

+0

Le numéro du jeton est la position du début et de la fin de ce terme dans la chaîne analysée originale. Par exemple: remove [7,13 - 1], ce mot commence au caractère 7 dans la chaîne et se termine à la position 13 du caractère. Je ne suis pas sûr de ce que le "- 1" est. Il est vrai que le shingling ne crée pas toutes les permutations de mots dans une chaîne - seulement des mots adjacents. Mais la correspondance de mots non adjacents est gérée par le score lucene. Le filtre de bardeau donne un score plus élevé pour la correspondance de mots adjacents car la phase correspondra exactement au jeton de n-gramme. – DotNetNuclear

+0

donc, il n'y a aucun moyen d'obtenir des jetons dans toutes les permutations possibles –