2016-09-16 58 views
0

我一直在使用Elasticsearch了一段时间,但我似乎无法找到解决这一具体问题的分析: 我有一个包含以下文本的文件:如何使用ElasticSearch搜索复合词?

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

如果用户键入“哈利·波特” (不含空格),我需要能够将该文档显示为搜索结果。可能吗? 我看着NGRAM,但它似乎并没有解决与NGRAM这种情况下堂妹,我会整个文档存储为:

"TheHarryPotterandtheSorcererStoneisagreatbook". 

这是不是我想要的堂妹,如果用户搜索“哈利·波特石头“,文件也不会显示出来。

回答

0

您可以使用“token_chars”:在你的ngram配置[“字母”,“数字”,“空白”]也指数的空格,这将符合您查询的“哈利·波特石”和“哈利·波特”

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

编辑: 您也索引“的ngram”中的内场和版本然后查询都正常分析字段和的ngram字段(包装在一个布尔查询)

+0

由于对于提示,让我先尝试一下。 – dickyj