具有多重匹配查询的函数得分



>我有一个弹性查询,其中包含一个多匹配查询。

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

我想为多匹配查询添加两个函数分数查询...并为具有phrase类型的多匹配查询提供更高的权重。以及具有best_fields类型的多匹配查询的权重较低...

的意思是关键字与我搜索的内容完全相同的文档必须具有更高的_score

我用布尔值编写了查询和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值是我自己在多次尝试中选择的,不可能对每种情况都很好。你必须记住,在相关性的背后有一个相当复杂的算法。有关更多信息,请查看:

  • 什么是相关性?
  • 相关性评分背后的理论

相关内容

  • 没有找到相关文章

最新更新