gpt4 book ai didi

elasticsearch - analyzed v not_analyzed 还是...?

转载 作者:行者123 更新时间:2023-11-29 02:45:27 24 4
gpt4 key购买 nike

ES 的新手,所以可能是个愚蠢的问题,但我正在尝试使用通配符进行搜索,例如:"SOMECODE*""*SOMECODE"

它工作正常,但文档中的值可能有"SOMECODE/FRED"
问题是 * 将匹配任何内容(不包含任何内容)。
*SOMECODE 将命中 SOMECODE/FRED

我尝试搜索 */SOMECODE 但没有返回任何结果。
我认为字段的标记化是根本问题。
即,/ 导致值为 2 个单词。

我尝试将 field 上的 map 设置为 not_analyzed,但我根本无法搜索它。

我做错了吗?

谢谢

最佳答案

通过设置 not_analyzed,您只允许完全匹配(例如,仅 "SOMECODE/FRED",包括大小写和特殊字符)。

我的猜测是您使用的是标准分析器(如果您不指定,它就是默认分析器)。如果是这种情况,Standard 会将斜线视为标记分隔符,并生成两个标记 [somecode][fred]:

$ curl -XGET 'localhost:9200/_analyze?analyzer=standard&pretty' -d 'SOMECODE/FRED'
{
"tokens" : [ {
"token" : "somecode",
"start_offset" : 0,
"end_offset" : 8,
"type" : "<ALPHANUM>",
"position" : 1
}, {
"token" : "fred",
"start_offset" : 9,
"end_offset" : 13,
"type" : "<ALPHANUM>",
"position" : 2
} ]
}

如果您不希望出现这种情况,则需要更改为不按特殊字符拆分的分词器。但是,我会质疑这个用例。通常,您需要拆分这些类型的字符。

关于elasticsearch - analyzed v not_analyzed 还是...?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14595905/

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