Elasticsearch-搜索小于min_gram的术语



我是Elasticsearch的新手,但我成功地产生了结果,几乎达到了我的预期,除了一个小问题。我只显示关注该问题的代码。使用edgeNGram作为过滤器:

filter: {
'type':'edgeNGram',
'max_gram':10,
'min_gram':3,
'side': 'front',
'minimum_should_match':'100%'
}

因此,结果正如预期的那样,但对于长度小于3个字符的单词,我没有得到任何结果。3个字符长给出了相当好的结果,但2个字符破坏了结果,给出了很多不相关的结果。

从本质上讲,我希望使用edgeNgram,长度为3个字符,但搜索两个字符长的术语

期待您的建议!

好吧,我已经在谷歌上搜索了很多天了,现在我刚刚找到了自己问题的解决方案。edgeNGram过滤器有一个preserve_original选项。文档显示:

(Optional, boolean) Emits original token when set to true. Defaults to false.

来源:https://www.elastic.co/guide/en/elasticsearch//reference/current/analysis-edgengram-tokenfilter.html

这似乎对我有效,现在正在获得预期的结果!希望它能帮助最终来到这里的人,这不是一个容易的发现。