gpt4 book ai didi

elasticsearch - Elasticsearch : Why simple query returns different score where all documents are equally relevant?

转载 作者:行者123 更新时间:2023-12-02 22:30:53 25 4
gpt4 key购买 nike

我有这个查询返回给我年龄 = 40、没有居住在状态“ID”并且余额> = 20000 和余额<= 30000 的客户?

查询如下所示:

POST /bank/_search?pretty
{
"query": {
"bool": {
"must": [
{ "match": { "age": "40" } }
],
"must_not": [
{ "match": { "state": "ID" } }
],
"filter": {
"range": {
"balance": {
"gte": 20000,
"lte": 30000
}
}
}
}
}
}

我觉得所有结果文档都具有同等相关性,但 elasticsearch 为每个文档分配了不同的分数。
样本结果: https://jsonblob.com/57de6b37e4b0dc55a4f67d54

我知道分数即将到来,因为我正在使用“匹配”查询。谁能告诉:-
  • 是否可以执行此查询以避免“匹配”并仅使用过滤器?因为我认为通过放置 age=40 和 state="ID",所以我只是在过滤结果集。
  • 我们能否避免这种分数计算,因为在我们的场景中,上述查询是不必要的?
  • 为什么这些文件有不同的分数。由于查询对我来说似乎很简单,它应该返回与此查询匹配或不匹配的文档。这里没有什么比紧密匹配或轻微匹配。
  • 最佳答案

    如果您不关心相关性并且想避免分数计算,您可以切换到过滤器:

    POST /bank/_search?pretty
    {
    "query": {
    "bool": {
    "filter": [
    {
    "range": {
    "balance": {
    "gte": 20000,
    "lte": 30000
    }
    }
    },
    {
    "term": {
    "age": "40"
    }
    },
    {
    "not": {
    "term": {
    "state": "ID"
    }
    }
    }
    ]
    }
    }
    }

    如果您想知道为什么某些结果会得到某个分数,您可以添加 explain: true在查询部分上方并获得分数的每个结果分割。

    关于elasticsearch - Elasticsearch : Why simple query returns different score where all documents are equally relevant?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39556756/

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