文档说使用field_value_factor值:
"field_value_factor": {
"field": "popularity",
"factor": 1.2,
"modifier": "sqrt",
"missing": 1
}
“这将转化为以下评分公式:
sqrt(1.2 * doc['popularity'].value)
“
但我不明白的是sqrt(1.2 * doc['popularity'].value)
做了什么?是否乘以每次命中的原始分数来创建新分数?它被添加了吗?我可以更改它是成倍增加还是添加?
这是在function_score [“boost_mode”]中定义的吗?
答案 0 :(得分:9)
score_mode - 此变量控制计算得分的组合方式:
boost_mode - 此变量控制查询得分和计算得分的组合方式
查看以下查询
WARNING: [192.168.2.50]:5703 [dev] [3.9-SNAPSHOT] EventQueue overloaded! Failed to process event packet sent from: [192.168.2.50]:5702
由于score_mode是乘法,因为你可以看到我的函数得分查询中有三个函数,所以这将乘以每个函数的得分
{
"query": {
"function_score": {
"query": {
"match_all": {}
},
"functions": [{
"field_value_factor": {
"field": "popularity",
"factor": 1.2,
"modifier": "sqrt",
"missing": 1
}
}, {
"linear": {
"distance": {
"origin": "0",
"scale": "0.4"
}
}
}, {
"gauss": {
"price": {
"origin": "0",
"scale": ".08"
}
}
}],
"score_mode": "multiply",
"boost_mode": "sum"
}
}
}
再次 - boost_mode是总和,所以我的最终得分将是按功能得分和查询得分评估的总得分总和。
document_score = function_score + query_score。
由于