[ "query" => "Will Smith" "type" => "best-6ren">
gpt4 book ai didi

function - 多匹配查询功能得分

转载 作者:行者123 更新时间:2023-12-03 00:39:45 25 4
gpt4 key购买 nike

我有一个 flex 查询,其中包含多重匹配查询。

 "multi_match" => [
"query" => "Will Smith"
"type" => "best_fields"
"fields" => [
"title^10",
"description^7",
"keywords",
"name"
]
"operator" => "and"
]

我想为多重匹配查询添加两个功能得分查询...
并为 phrase类型的多重匹配查询赋予较高的权重,而对 best_fields类型的多重匹配查询赋予较小的权重...

我的意思是具有与我搜索的关键字完全相同的关键字的文档必须具有更高的 _score
我在bool中写了查询和function_score,必须查询...但是结果没有改变。

有谁知道如何管理我的查询以获得更好的结果?

谢谢。

最佳答案

我可以告诉你我是如何做的。看一下下面的查询:

{
"query": {
"bool": {
"should": [
{
"multi_match": {
"query": "SEARCH TERM HERE",
"fields": [
"title^70",
"description^30",
"content^20"
],
"type": "phrase",
"boost": 100
}
},
{
"multi_match": {
"query": "SEARCH TERM HERE",
"fields": [
"title^30",
"description^25",
"content^10"
],
"type": "most_fields",
"minimum_should_match": "100%",
"boost": 50
}
},
{
"multi_match": {
"query": "SEARCH TERM HERE",
"fields": [
"title^25",
"description^15",
"content^10"
],
"type": "most_fields",
"minimum_should_match": "50%",
"boost": 25
}
},
...
]
}
}
}

仅当找到完整的搜索词组时,第一个 multi_match才匹配文档,并将整个结果提高100。

第二部分从搜索词中搜索100%单词。因此,单词的顺序无关紧要,但是所有单词都必须出现在搜索到的文档中。提升= 50。

第三部分搜索50%匹配。意味着并非所有单词都必须在文档中才能将其返回结果。提升= 25。
...部分意味着对于其余结果我还有更多东西。但这并不是每种情况下都需要的。
boost值是我自己在许多尝试中选择的,可能并不适合每种情况。您必须记住,相关性背后有一个相当复杂的算法。有关更多信息,请查看:
  • What Is Relevance?
  • Theory Behind Relevance Scoring
  • 关于function - 多匹配查询功能得分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49719337/

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