elasticsearch,relevance,Function,elasticsearch,Relevance" /> elasticsearch,relevance,Function,elasticsearch,Relevance" />

Function 多匹配查询功能评分

Function 多匹配查询功能评分,function,elasticsearch,relevance,Function,elasticsearch,Relevance,我有一个弹性查询,其中包含一个多匹配查询 "multi_match" => [ "query" => "Will Smith" "type" => "best_fields" "fields" => [ "title^10", "description^7", "keywords", "name" ] "oper

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

 "multi_match" => [
        "query" => "Will Smith"
        "type" => "best_fields"
        "fields" => [
          "title^10",
          "description^7",
          "keywords",
          "name"
        ]
        "operator" => "and"
      ]
我想为多匹配查询添加两个函数分数查询。。。 并对具有
短语
类型的多匹配查询赋予更高的权重。。还有一个权重较小的多匹配查询,它具有
最佳\u字段
类型

我的意思是,与我搜索的关键词完全相同的文档必须具有更高的
\u分数

我在bool中编写了查询和函数_分数,必须查询。。。但是结果没有改变

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


谢谢。

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

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


    • 我可以向你展示我是如何做类似的事情的。请看下面的查询:

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