关于EdgeNgram如何处理数字的任何想法?

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

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

例子:

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

有什么想法吗?

最佳答案

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

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

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

关于python - python-ElasticSearch : EdgeNgrams and Numbers,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13636419/

10-12 21:57