美文网首页
minimum_should_match

minimum_should_match

作者: zz云飞扬 | 来源:发表于2019-12-16 16:08 被阅读0次

    1/bool查询中使用 minimum_should_match

    bool查询也可以用 minimum_should_match, 如果配置成数字 3, 则表示 查询关键词被分词器分成 3 个及其以下的term 时,  they are all required(条件都需要满足才能符合查询要求)

    elasticsearch query中的minimum_should_match ,字面意思就很清晰了,就是最小匹配度,但是它却有很多种配置方式。

    正向匹配度比如 "minimum_should_match":3 官方原文解释是:Indicates a fixed value regardless of the number of optional clauses.

    这里要说明一下为什么是optional clauses(翻译为可选的子句),因为对于被analyzer分解出来的每一个term都会构造成一个should的bool query的查询,每个term变成一个term query子句。

    例如"query": "how not to be",被解析成:

    {

      "bool": {

        "should": [

          { "term": { "body": "how"}},

          { "term": { "body": "not"}},

          { "term": { "body": "to"}},

          { "term": { "body": "be"}}

        ],

        "minimum_should_match": 3

      }

    }

    (注:在bool query中minimum_should_match只能紧跟在should的后面,放其他地方会出异常)

    在bool中这样使用也可以:

    {"bool": {

                      "should": [

                              {"match": { "flow_title": "我的查询关键字" }},

                              {"match": { "title": "我的查询关键字" }},

                              {"match": { "content": "我的查询关键字" }}           

                              ],

                      "minimum_should_match":"3<90%"          

       }}

    比如下面的搜索,should中有4个条件,默认情况下,只要满足其中一个条件,就可以匹配作为结果返回

    但是可以精准控制,should的4个条件中,至少匹配几个才能作为结果返回(下面的3 表示三个)

    GET/forum/article/_search

    {

    "query": {

    "bool": {

    "should": [

    {"match": {"title":"java"}},

    {"match": {"title":"elasticsearch"}},

    {"match": {"title":"hadoop"}},

    {"match": {"title":"spark"}}

          ],

    "minimum_should_match":3

        }

      }

    }

     "minimum_should_match":"3<90%"表示如果可选子句的数量等于(或小于)设置的值,则它们都是必需的,但如果它大于设置的值,则适用规范。在这个例子中:如果有1到3个子句,则它们都是必需的,但是对于4个或更多子句,只需要90%的匹配度. 

    参考链接地址:https://blog.csdn.net/qq_22985751/article/details/90704189。 

    2/minimum_should_match 使用场景2

    GET /_search

    {"from": 0,

    "size": 20,

      "query":{

        "match": {

          "NAME.raw":{

            "query":  "hetong",

          "minimum_should_match":"3<90%"

          }

        }

      }

    }

    minimum_should_match

    minimum_should_match:当operator参数设置为or时,该参数用来控制应该匹配的分词的最少数量;

    {"query":{  

          "match":{  

             "字段名":{  

                "query":"查询内容",

                "operator":"or", // match查询接受一个'operator'参数,默认值为or。如果要求所有查询关键字都匹配,可以更改参数值为and

                "minimum_should_match":"70%"

             }

          }

       }

    }

    原文链接:https://blog.csdn.net/qq_26915707/article/details/85784734

    3、multi_match 中使用:

    GET/forum/article/_search

    {

    "query": {

    "multi_match": {

    "query":"java solution",

    "type":"best_fields",

    "fields":              ["title^2","content"],

    "tie_breaker":0.3,

    "minimum_should_match":"50%"

        }

      }

    }

    相关文章

      网友评论

          本文标题:minimum_should_match

          本文链接:https://www.haomeiwen.com/subject/uvbrnctx.html