gpt4 book ai didi

elasticsearch - Elasticsearch:禁用多匹配查询的协调因子

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

我在每个字段上使用具有不同权重的多重匹配查询。
我将tie_breaker设置为1以禁用use_dis_max,并使用总和而不是分数的最大值。

GET index_name/index_type/_search?explain
{
"size": 1,
"query": {
"multi_match": {
"query": "ticket",
"fields": ["title^9", "descr^4", "*section_body"],
"tie_breaker": 1
}
}
}

ES将每个字段的分数相加,然后将其乘以协调因子。

我想禁用协调因子,因此我尝试将多匹配查询包装到bool查询中,并将disable_coord设置为true,如下所示:
GET index_name/index_type/_search?explain
{
"size": 1,
"query": {
"bool": {
"disable_coord": true,
"should": [
{
"multi_match": {
"query": "ticket",
"fields": ["title^9", "descr^4", "*section_body"],
"tie_breaker": 1
}
}
]
}
}
}

但是我可以看到评分公式没有任何变化,ES仍在对所有不同字段的分数求和,然后将结果乘以协调因子。

如何禁用协调因子?

最佳答案

我建议分离should的各个条件,并分别增强它们。可能看起来像以下内容:

{
"size": 1,
"query": {
"bool": {
"disable_coord": true,
"should": [
{"match" : {"title" : {"query" : "ticket", "boost" : 9}}},
{"match" : {"descr" : {"query" : "ticket", "boost" : 4}}},
{"multi_match" : {
"fields" : ["*section_body"],
"query" : "ticket"
}}
]
}
}
}

对于我创建的一组愚蠢的测试数据,看起来确实会导致不再应用协调因子,也就是说,当 disable_coordtrue时,每个文档的结果得分都高于设置为 false时的得分。

关于elasticsearch - Elasticsearch:禁用多匹配查询的协调因子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28503578/

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