elasticsearch version: 7.10.1
boosting介绍
Boosting查询允许您降低与负面查询匹配的文档的相关性评分
boosting语法
GET /_search
{
"query": {
"boosting": {
"positive": {
"term": {
"text": "apple"
}
},
"negative": {
"term": {
"text": "pie tart fruit crumble tree"
}
},
"negative_boost": 0.5
}
}
}
关键词 | 语法介绍 |
---|---|
positive | 这是主要要匹配的查询 ,只会展示positive 条件匹配的结果 |
negative | 这是要降低相关性分数的查询 |
negative_boost | 一个在0到1之间的值,用于降低与negative查询匹配的文档的相关性评分 |
查询流程
- 执行正向(Positive)查询 ElasticSearch首先执行正向查询,获取与之匹配的文档集合。这个查询是Boosting查询的主要部分。
- 执行反向(Negative)查询 然后,ElasticSearch执行反向查询,获取与之匹配的文档集合。这个查询是用来降低与之匹配文档的相关性分数。
- 计算相关性分数 对于每个文档,ElasticSearch计算其相对于正向查询的相关性分数。如果该文档也与反向查询匹配,则其分数会根据negative_boost的值进行降低。
- 如果一个文档只与正向查询匹配,则保留原始分数不变
- 如果一个文档既与正向查询又与反向查询匹配,则按new_score = old_score * negative_boost计算新的降低后的分数
- 排序返回结果 最后,ElasticSearch根据计算出的新相关性分数对匹配文档进行排序,并返回结果。
案例
场景
某电商网站,用户搜索&#