【问题标题】:function score with multi-match query具有多匹配查询的功能得分
【发布时间】:2018-09-18 01:10:27
【问题描述】:

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

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

我想为多匹配查询添加两个函数分数查询... 并为具有phrase 类型的多匹配查询赋予更高的权重.. 并为具有best_fields 类型的多匹配查询赋予较小的权重......

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

我将查询和function_score写在布尔值中,必须查询...但结果没有改变..

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

谢谢。

【问题讨论】:

    标签: function elasticsearch relevance


    【解决方案1】:

    我可以告诉你我是如何做类似的事情的。看看下面的查询:

    {
      "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 值是我自己在多次尝试中选择的,并不是对每种情况都适用。你必须记住,在相关性背后有一个相当复杂的算法。欲了解更多信息,请查看:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-12
      • 2020-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-18
      • 2013-08-30
      • 1970-01-01
      相关资源
      最近更新 更多