多匹配查询的函数得分
function score with multi-match query
我有一个包含多匹配查询的弹性查询..
"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% 匹配。意味着并非所有单词都必须在文档中才能 return 它出现在结果中。提升 = 25.
...
部分意味着我还有更多其他结果。但并不是每种情况都需要。
boost
值是我自己多次尝试选择的值,不一定适用于每一种情况。你必须记住,相关性背后有一个相当复杂的算法。有关详细信息,请查看:
我有一个包含多匹配查询的弹性查询..
"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% 匹配。意味着并非所有单词都必须在文档中才能 return 它出现在结果中。提升 = 25.
...
部分意味着我还有更多其他结果。但并不是每种情况都需要。
boost
值是我自己多次尝试选择的值,不一定适用于每一种情况。你必须记住,相关性背后有一个相当复杂的算法。有关详细信息,请查看: