gpt4 book ai didi

elasticsearch - 带有@(符号)的Elastic Search查询带来与没有

转载 作者:行者123 更新时间:2023-12-03 01:41:04 24 4
gpt4 key购买 nike

我正在尝试用“@”前缀匹配文本,例如ElasticSearch上的“@stackoverflow”。我正在使用 bool(boolean) 查询,这两个返回的结果完全相同,实际上忽略了我的@符号:

使用@查询1:

{"query":{"bool":{"must":[{"query_string":{"default_field":"text","default_operator":"AND","query":"@stackoverflow"}}]}},"size":20}

查询2不包含:
{"query":{"bool":{"must":[{"query_string":{"default_field":"text","default_operator":"AND","query":"stackoverflow"}}]}},"size":20}

我的 map :
{"posts":{"mappings":{"post":{"properties":{"upvotes":{"type":"long"},"created_time":{"type":"date","format":"strict_date_optional_time||epoch_millis"},"ratings":{"type":"long"},"link":{"type":"string"},"pic":{"type":"string"},"text":{"type":"string"},"id":{"type":"string"}}}}}}

我尝试将其编码为\ u0040,但这没有任何区别。

最佳答案

您的text字段为文本类型,默认情况下由standard分析器进行分析,这意味着在分析过程之后@stackoverflow将被索引为stackoverflow,如下所示

GET /_analyze?analyzer=standard&text=@stackoverflow
{
"tokens": [
{
"token": "stackoverflow",
"start_offset": 1,
"end_offset": 14,
"type": "<ALPHANUM>",
"position": 0
}
]
}

如果您需要完全匹配,则可能要使用 keyword类型,或者指定其他分析器,例如 whitespace,这将在数据中保留 @符号:
GET /_analyze?analyzer=whitespace&text=@stackoverflow
{
"tokens": [
{
"token": "@stackoverflow",
"start_offset": 0,
"end_offset": 14,
"type": "word",
"position": 0
}
]
}

更新:

然后,我建议对该字段使用自定义分析器,以便您可以控制如何对值建立索引。像这样重新创建索引,然后应该可以进行搜索:
PUT posts
{
"settings": {
"index": {
"analysis": {
"analyzer": {
"my_analyzer": {
"type": "custom",
"tokenizer": "whitespace",
"filter": [ "lowercase" ]
}
}
}
}
},
"mappings": {
"post": {
"properties": {
"upvotes": {
"type": "long"
},
"created_time": {
"type": "date",
"format": "strict_date_optional_time||epoch_millis"
},
"ratings": {
"type": "long"
},
"link": {
"type": "string"
},
"pic": {
"type": "string"
},
"text": {
"type": "string",
"analyzer": "my_analyzer"
},
"id": {
"type": "string"
}
}
}
}
}

关于elasticsearch - 带有@(符号)的Elastic Search查询带来与没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47453504/

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