Elasticsearch深度探秘搜索技术基于tie_breaker参数优化dis_max搜索效果
创始人
2024-05-05 16:51:58

接着…

搜索title或content中包含java beginner的帖子
GET /post/_search
{"query": {"dis_max": {"queries": [{ "match": { "title": "java beginner" }},{ "match": { "content":  "java beginner" }}]}}
}

有些场景不是太好复现的,因为是这样,你需要尝试去构造不同的文本,然后去构造一些搜索出来,去达到你要的一个效果

可能在实际场景中出现的一个情况是这样的:
(1)某个帖子,doc1,title中包含java,content不包含java beginner任何一个关键词
(2)某个帖子,doc2,content中包含beginner,title中不包含任何一个关键词
(3)某个帖子,doc3,title中包含java,content中包含beginner
(4)最终搜索,可能出来的结果是,doc1和doc2排在doc3的前面,而不是我们期望的doc3排在最前面

dis_max,只是取分数最高的那个query的分数而已。

dis_max只取某一个query最大的分数,完全不考虑其他query的分数
使用tie_breaker将其他query的分数也考虑进去

tie_breaker参数的意义,在于说,将其他query的分数,乘以tie_breaker,然后综合与最高分数的那个query的分数,综合在一起进行计算

除了取最高分以外,还会考虑其他query的分数
tie_breaker的值,在0~1之间,是个小数,就ok

GET /post/_search
{"query": {"dis_max": {"queries": [{ "match": { "title": "java beginner" }},{ "match": { "content":  "java beginner" }}],"tie_breaker": 0.3}}
}

相关内容

热门资讯

儿童面膜热销,谁在刻意制造孩子... (来源:上观新闻)当一款印着卡通图案的粉色面膜被轻轻敷在5岁女孩脸上,她的母亲按下快门,将这一幕分享...
现货白银价格单日涨超5% 突破... 财联社11月29日讯(编辑 赵昊)周五(11月28日)纽约时段,现货白银价格一度涨超5.5%最高报每...
一土耳其油轮爆炸起火 暂无人员... 转自:财联社【一土耳其油轮爆炸起火 暂无人员伤亡】财联社11月29日电,一艘土耳其油轮“凯罗斯”号在...
世贸组织:全球货物贸易增速将放... 来源:央视新闻客户端当地时间28日,世贸组织发布最新一期货物贸易晴雨表显示,2025年上半年货物贸易...
王毅会见英国首相国家安全事务顾... 11月28日,中共中央政治局委员、中央外办主任王毅在北京会见英国首相国家安全事务顾问鲍威尔。王毅说,...