gpt4 book ai didi

elasticsearch - ElasticSearch搜索部分字母数字值

转载 作者:行者123 更新时间:2023-12-02 23:06:00 25 4
gpt4 key购买 nike

我有一个字符串字段,其值类似于PA2456UPA23U-RB,我想进行部分匹配,这样我就可以搜索PA24并得到第一个结果,或者搜索PA23U-RB并找到第二个结果(因此,全场比赛。

我尝试使用ngram,但是它忽略了数值,因此,如果我输入pa111,它将返回以pa开头的任何内容

有关示例,请参见此gist

这可能是一个单独的问题,也可能是相关的,但搜索12345001时也应匹配12345-001
谢谢

更新
我使用的最终分析器在这里:https://gist.github.com/3803180

最佳答案

根据您的要求,使ngram看起来是一个不错的选择,但是我认为edge_ngrams应该足够了。这样一来,由于您要为较少的索引建立索引,因此索引的增长会稍慢一些。无论如何,问题是您也不需要对查询应用相同的分析器,否则查询pa111意味着查询可以从中得到的所有ngram,这将导致您进行更多的匹配会期望的。

您只需要将search_analyzer更改为不会产生ngram的分析器即可。您可以使用已有的相同名称并删除ngram token 过滤器(仅对于search_analyzer,index_analyzer可以)。

关于破折号问题,请看Word delimiter token filter。您需要对其进行配置以使其按预期工作。我猜generate_number_parts=falsegenerate_word_parts=falsesplit_on_numerics=false选项应该可以使其按需工作。这样,破折号将不会被索引。您需要在索引时间和查询时间都应用 token 过滤器。

关于elasticsearch - ElasticSearch搜索部分字母数字值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12651808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com