您当前的位置: 首页 >  搜索

Dongguo丶

暂无认证

  • 2浏览

    0关注

    472博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

12深度探秘搜索技术_案例实战基于tie_breaker参数优化dis_max搜索效果

Dongguo丶 发布时间:2021-11-20 08:14:17 ,浏览量:2

1、搜索title或content中包含java beginner的帖子
GET /forum/article/_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的分数而已。

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

tie_breaker参数的意义,在于说,将其他query的分数,乘以tie_breaker,然后综合与最高分数的那个query的分数,综合在一起进行计算 除了取最高分以外,还会考虑其他的query的分数 tie_breaker的值,在0~1之间,是个小数,

0 代表使用最佳匹配 ;1 代表所有语句同等重要

GET /forum/article/_search
{
    "query": {
        "dis_max": {
            "queries": [
                { "match": { "title": "java beginner" }},
                { "match": { "body":  "java beginner" }}
            ],
            "tie_breaker": 0.3
        }
    }
}
关注
打赏
1638062488
查看更多评论
立即登录/注册

微信扫码登录

0.0392s