跳到主要内容

子句加权 boosting

根据negative匹配子句影响positive匹配子句的分数。

数据准备

PUT /blogs
{
"mappings" : {
"_doc" : {
"properties" : {
"title" : { "type" : "text" },
"body" : { "type" : "text" }
}
}
}
}

PUT /blogs/_doc/1
{
"title": "Quick brown rabbits",
"body": "Brown rabbits are commonly seen."
}

1. 基础算分

GET blogs/_search
{
"query": {
"match": {
"title": "rabbits"
}
}
}

基础的BM25分数为 0.2876821

2. 影响算分

GET blogs/_search
{
"query": {
"boosting": {
"positive": {
"match": {
"title": "rabbits"
}
},
"negative": {
"match": {
"body": "rabbits"
}
},
"negative_boost": 1.2
}
}
}

分数为 0.2876821 * 1.2 = 0.3452185

解释

当negative满足匹配时,得分=negative_boost * positive的query分数,否则不影响。

用途:例如我们不需要使用 bool 查询中的“NOT”子句排除文档,而仅仅降低它们的分数用于影响排名。


参数说明
positive(必填项)用于执行匹配的查询子句
negative(必填项)用于加权条件判断的查询子句
negative_boost(必填项)加权系数,当negative查询匹配时,用于降低或提升positive匹配的文档相关性得分。