12 基于multi_match + best fields语法实现dis_max+tie_breaker

示例:

GET /forum/article/_search
{
  "query": {
    "dis_max": {
      "queries": [
        {
          "match": {
            "title": {
              "query": "java beginner",
              "minimum_should_match": "50%",
              "boost": 2
            }
          }
        },
        {
          "match": {
            "content": {
              "query": "java beginner",
              "minimum_should_match": "50%"
            }
          }
        }
      ],
      "tie_breaker": 0.3
    }
  }
}

简化:

GET /forum/_search
{
  "query": {
     "multi_match": {
       "query": "java beginner",
       "type":"best_fields", 
       "fields": [
          "title^2",
          "content"
        ],
        "tie_breaker": 0.3,
        "minimum_should_match": "50%"
     }
  }
}

  minimum_should_match的主要用途 : 去长尾,long tail

  长尾是什么呢,举个例子:假设搜索5个关键词,但是很多结果是只匹配1个关键词的,其实跟你想要的结果相差甚远,这些结果就是长尾

  minimum_should_match,控制搜索结果的精准度,只有匹配一定数量的关键词的数据,才能返回
  

posted on 2021-10-12 08:20  溪水静幽  阅读(42)  评论(0)    收藏  举报