主要知识点:
- tie_breaker的使用原因和使用方法
一、tie_breaker的使用原因
dis_max,只是取分数最高的那个query的分数而已,完全不考虑其他query的分数,这种一刀切的做法,可能导致在有其他query的影响下,score不准确的情况,这时为了使用结果更准确,最好还是要考虑到其他query的影响,
二、tie_breaker的使用方法
使用tie_breaker将其他query的分数也考虑进去
tie_breaker参数的意义,将其他query的分数乘以tie_breaker,然后综合考虑后与最高分数的那个query的分数综合在一起进行计算,这样做除了取最高分以外,还会考虑其他的query的分数。tie_breaker的值,设置在在0~1之间,是个小数就行,没有固定的值
语法如下:
GET /forum/article/_search
{
"query": {
"dis_max": {
"queries": [
{ "match": { "title": "java beginner" }},
{ "match": { "body": "java beginner" }}
],
"tie_breaker": 0.3
}
}
}