主要知识点:
- 基于multi_match语法实现dis_max+tie_breaker
1、best_fields+tie_breaker
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%"
}
}
}
"fields":[ "title^2", "content" ],把title的权重设为2
二、multi_match实现dis_max+tie_breaker
GET /forum/article/_search
{
"query": {
"dis_max": {
"tie_breaker": 0.7,
"queries": [{"match": {"title":
{"query": "java beginer","boost":2,"minimum_should_match": "50%"}}},
{"match": {"content":
{"query": "java beginer","boost":1,"minimum_should_match": "30%"}}}
]
}
}
}
minimum_should_match,主要是用来去长尾(long tail),什么是长尾?,比如你搜索5个关键词,但是很多结果是只匹配1个关键词的,其实跟你想要的结果相差甚远,这些结果就是长尾。
minimum_should_match,控制搜索结果的精准度,只有匹配一定数量的关键词的数据,才能返回。