gpt4 book ai didi

elasticsearch - 修改数组字符串字段中的ElasticSearch分数?

转载 作者:行者123 更新时间:2023-12-03 00:11:30 26 4
gpt4 key购买 nike

我使用的是ElasticSearch 2.2索引,我无法轻松更改映射,但我希望基于关键字进行一些搜索请求。

这是我的字符串数组字段“关键字”的映射:

"keywords": {
"type": "string",
"norms": {
"enabled": false
},
"analyzer": "analyzer_keyword"
 "analyzer_keyword": {
"filter": "lowercase",
"tokenizer": "keyword"
}

我想通过 bool(boolean) 请求使用POST查询它:
{
"query":
{

"bool" : {
"should" :
[
{
"term":
{
"keywords": "foo bar",
}
},
{
"term":
{
"keywords": "baz",
}
},
{
"term":
{
"keywords": "qux",
}
}
]

}


},
"highlight": {
"fields" : {
"keywords" : {}
}
}
}

我希望最好的匹配分数是包含最多关键字的匹配。

我希望此请求按得分排序的示例:
  • {id:#x,关键字:[“foo bar”,“baz”]}
  • {id:#z,关键字:[“foo bar”,“qux”]}
  • {id:#y,关键字:[“qux”]}
  • {id:#w,关键字:[“baz”]}

  • 但是相反,我有一些这样的结果:
  • {id:#x,关键字:[“foo bar”,“baz”]}
  • {id:#y,关键字:[“qux”]}
  • {id:#z,关键字:[“foo bar”,“qux”]}
  • {id:#w,关键字:[“baz”]}

  • 您有什么想法可以帮助我进行管理吗?

    对不起,我的英语不好,谢谢您的帮助。

    最佳答案

    结果按其分数排序,这些分数取决于许多标准,包括分片中匹配项的频率。但是您并不在意,您希望条件的所有子句都具有相同的分数,可以使用以下内容:

    GET /test/test/_search
    {
    "query": {
    "bool": {
    "should": [
    {
    "constant_score": {
    "query": {
    "term": {
    "keywords": "foo bar"
    }
    }
    }
    },
    {
    "constant_score": {
    "query": {
    "term": {
    "keywords": "qux"
    }
    }
    }
    },
    {
    "constant_score": {
    "query": {
    "term": {
    "keywords": "baz"
    }
    }
    }
    }
    ]
    }
    }
    }

    关于elasticsearch - 修改数组字符串字段中的ElasticSearch分数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40262089/

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