gpt4 book ai didi

javascript - Elasticsearch 查询字符串 : partially match a NOT query?

转载 作者:行者123 更新时间:2023-11-29 19:09:38 25 4
gpt4 key购买 nike

我正在制作一个将使用 bool 运算符 ( as described here ) 的搜索字段,我希望它们的行为与我的正常(非 bool 运算符)查询相同,由于 而匹配部分字符串前缀匹配。举例说明:搜索fir,得到fire pitfire ballfirm等结果。然而,如果我随后搜索 fire -b,它仍然返回 fire ball,我认为这是错误的;我必须搜索 fire -ball 以排除 fire ball。有没有办法改变这种行为?

作为引用,这是当前发送到 ES 服务器的查询:

{
"query": {
"bool": {
"should": [
{
"queryString": {
"fields": [
"name"
],
"query": "fire -b",
"defaultOperator": "OR"
}
},
{
"multi_match": {
"query": "fire -b",
"type": "phrase_prefix",
"fields": [
"name"
]
}
}
]
}
}
}

最佳答案

Query String 查询允许通配符。我相信你应该删除 multimatch。我相信会弄乱你的结果,只需在每个术语的末尾添加一个通配符,如下所示。如果你想要一些完全匹配,只是不要添加通配符。此外,此查询支持 fuzziness,默认设置为 AUTO,这可能会再次弄乱您的结果。如果您想禁用它,只需将其设置为零即可。

{
"query": {
"bool": {
"should": [
{
"queryString": {
"fields": [
"name"
],
"query": "fire* -b*",
"defaultOperator": "OR"
}
}
]
}
}
}

关于javascript - Elasticsearch 查询字符串 : partially match a NOT query?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40100006/

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