multi_match 的 minimum_should_match

Posted feng07

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了multi_match 的 minimum_should_match相关的知识,希望对你有一定的参考价值。

 

minimum_should_match 只能用在multi_match

可以这样写:


  "query": 
        "multi_match": 
          "query":"徐峥沈腾黄渤吃火锅",
          "fields":["title"],
          "minimum_should_match":4
        
    

表示命中4个词的文档才会返回

也可以这样写:


  "query": 
        "multi_match": 
          "query":"徐峥沈腾黄渤吃火锅",
          "fields":["title"],
          "minimum_should_match":"80%"
        
    

这里的80%是指query的分词个数的80%

我们调一下分词接口,看结果:


    "tokens": [
        
            "token": "徐峥",
            "start_offset": 0,
            "end_offset": 2,
            "type": "CN_WORD",
            "position": 0
        ,
        
            "token": "沈腾",
            "start_offset": 2,
            "end_offset": 4,
            "type": "CN_WORD",
            "position": 1
        ,
        
            "token": "黄渤",
            "start_offset": 4,
            "end_offset": 6,
            "type": "CN_WORD",
            "position": 2
        ,
        
            "token": "吃火锅",
            "start_offset": 6,
            "end_offset": 9,
            "type": "CN_WORD",
            "position": 3
        
    ]

query被分成了4个词,所以minimum_should_match:"80%" 在这里等于 minimum_should_match:4*0.8

还要注意下,这里的小数值会向下取整,也就是命中3个词的就会返回。

 

以上是关于multi_match 的 minimum_should_match的主要内容,如果未能解决你的问题,请参考以下文章

嵌套:QueryParsingException[[multi_match] 查询不支持 [fields]];

multi_match 查询

Elasticsearches 查询 multi_match 与 match_phrase

es查询multi_match多字段匹配

es查询multi_match多字段匹配

elasticsearch term match multi_match区别