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个词的就会返回。