gpt4 book ai didi

elasticsearch - 为什么弹性找不到我的搜索文字?

转载 作者:行者123 更新时间:2023-12-03 02:07:05 25 4
gpt4 key购买 nike

我有一个类型的多个实例,每个实例都有一个displayName字段。该字段是:

"Contributor1"
"Contributor2"
...
"Contributor49"

我将所有映射/分析器/ etc设置为默认值。

我尝试找到这个:
fuzzy_like_this_field: { "displayName": { like_text: "49" } }

但是它不返回任何匹配项。当我尝试以下搜索文本时:
"c49" -> nothing
"co49" -> nothing
"con49" -> nothing
"cont49" -> nothing
"contr49" -> nothing
"contri49" -> nothing
"contrib49" -> CORRECT MATCH

我如何改善搜索?奇怪的是 flex 找不到“49”-在所有来源中它都是唯一的...

最佳答案

对字符串字段的Elasticsearch模糊搜索基于Levenshtein编辑距离:

String

When querying string fields, fuzziness is interpreted as a Levenshtein Edit Distance — the number of one character changes that need to be made to one string to make it the same as another string.



http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/common-options.html#fuzziness

Levenshtein编辑距离的详细说明可以在这里找到: http://en.wikipedia.org/wiki/Levenshtein_distance

就您的示例而言,将要搜索的术语更改为找到的术语所需的字符添加和删除总数。字符串“contrib49”比“49”更接近“Contributor49”,它属于此字段和搜索的默认距离或模糊程度。

您可以使用默认值为.5的模糊性参数来增加模糊性: http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-flt-field-query.html

增加它(例如.7或.8)将增加它匹配的总体模糊性。

总体而言,您确定此处使用的是正确的方法吗?如果您只寻找通配符搜索,那么模糊搜索可能不是最好的方法-您可能想查看通配符和ngram分析器。

关于elasticsearch - 为什么弹性找不到我的搜索文字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24746165/

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