一尘不染

ElasticSearch:EdgeNgrams和数字

elasticsearch

关于EdgeNgram如何对待数字的任何想法?

我正在使用ElasticSearch后端运行干草堆。我创建了EdgeNgram类型的索引字段。该字段将包含一个字符串,其中可能包含单词和数字。

当我使用部分单词对该字段进行搜索时,它会按预期运行。但是,如果输入部分数字,则不会得到想要的结果。

例:

我通过键入“ edgen”搜索索引字段“ EdgeNgram 12323”,然后将索引返回给我。如果我通过键入“
123”来搜索相同的索引,那么我什么也没得到。

有什么想法吗?


阅读 299

收藏
2020-06-22

共1个答案

一尘不染

如果您使用edgeNGram令牌生成器,则它将“ EdgeNGram
12323”视为单个令牌,然后在其上应用edgeNGram’ing进程。例如,如果min_grams = 1 max_grams =
4,您将获得以下标记的索引:[“ E”,“ Ed”,“ Edg”,“ Edge”]。所以我想这不是您真正要寻找的-考虑改用edgeNGram令牌过滤器:

如果您使用的是edgeNGram令牌过滤器,请确保您使用的令牌生成器实际上将文本“ EdgeNGram 12323”令牌化以产生两个令牌:[“
EdgeNGram”,“ 12323”](标准或空白令牌生成器将做到这一点)。然后在其旁边应用edgeNGram过滤器。

通常,edgeNGram将采用“ 12323”并产生诸如“ 1”,“ 12”,“ 123”等的令牌。

2020-06-22