2016-09-16 9 views
0

Я использую Elasticsearch на некоторое время, но я не могу найти анализатор, который решает этот конкретный вопрос: У меня есть документ, который содержит следующий текст:Как искать составное слово, используя ElasticSearch?

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

Если пользователь «HarryPotter» (без пробелов), я должен иметь возможность отображать этот документ в качестве результата поиска. Является ли это возможным? я смотрел на Ngram, но это не похоже, чтобы исправить этот сценарий кузен с Ngram, я бы хранить весь документ как:

"TheHarryPotterandtheSorcererStoneisagreatbook". 

Который не то, что я хочу сог, если пользователь ищет «гарри поттер камень ", документ тоже не появится.

ответ

0

Вы можете использовать «token_chars»: [ «письмо», «цифра», «пробелы»] в конфигурации Ngram также индексировать пробельные, который будет соответствовать вашему запросу «Гарри Поттер камень» и «HarryPotter»

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

Edit: Можно также индексировать «Ngram» версии во внутреннем поле, а затем запросить как нормальное анализируемый поле и поле Ngram (завернутое в запросе BOOL)

+0

Спасибо для подсказок, позвольте мне попробовать это в первую очередь. – dickyj