2016-09-16 7 views
0

J'utilise ElasticSearch pendant un certain temps, mais je ne peux pas sembler trouver un analyseur qui permet de résoudre ce problème particulier: j'ai un document qui contient le texte suivant:Comment rechercher un mot composé en utilisant ElasticSearch?

"The Harry Potter and the Sorcerer Stone is a great book". 

Si les types d'utilisateurs « harrypotter » (sans espaces), je dois pouvoir afficher ce document en tant que résultat de recherche. C'est possible? J'ai regardé Ngram, mais il ne semble pas corriger ce scénario coz avec Ngram, je dois stocker tout le document comme:

"TheHarryPotterandtheSorcererStoneisagreatbook". 

Ce qui est pas ce que je veux coz si l'utilisateur recherche « harry potter pierre ", le document n'apparaîtra pas aussi.

Répondre

0

Vous pouvez utiliser « token_chars »: [ « lettre », « chiffres », « espaces blancs »] dans votre configuration ngram à l'index aussi Les espaces blancs, qui correspondent à votre recherche « pierre harry potter » et « harrypotter »

ref: https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-ngram-tokenizer.html

Edit: Vous pouvez indexer aussi la version « ngram » dans un champ intérieur, puis interroger à la fois le champ analysé normal et le champ ngram (enveloppé dans une requête bool)

+0

Merci pour les conseils, laissez-moi essayer d'abord. – dickyj