我在使用field_value_factor
和ElasticSearch时有一个问题。
我想实现的功能是
alpha * log(1 + beta * doc['popularity'].value)
alpha = 1.0
时,使用field_value_factor
的脚本由
"field_value_factor": {
"field": "popularity",
"factor": beta,
"modifier": "log1p"
}
如this link所示:
然而,当alpha != 1.0
时,我们如何使用field_value_factor
给出权重(即alpha)?
你对此有什么想法吗?
答案 0 :(得分:3)
功能得分可以级联,因此boost_factor
and field_value_factor的组合
应该让你实现同样的目标。
{
"query": {
"function_score": {
"query": {
"match_all": {}
},
"functions": [
{
"boost_factor": <alpha>
},
{
"field_value_factor": {
"field": "popularity",
"factor": <beta>,
"modifier": "log1p"
}
}
],
"score_mode": "multiply"
}
}
}