我在文档中有一个字段是排名:值越低,分数应该越高。成为第一是最好的,但成为最后是最糟糕的。因此排名 1 优于 100 万。
到目前为止,我已经能够使用 score_query and field_value_factor 来提升字段值本身,但它为具有较高数字排名的文档提供了更高的提升。
"field_value_factor": {
"field": "rank",
"factor": 1.2,
"modifier": "sqrt",
"missing": 1
}
我应该使用不同的修饰符吗?还是我的做法完全错误?另外,我不想单独对其进行排序,因为我还有其他因素影响 _score
。
最佳答案
你实际上需要采用一个修饰函数来倒数rank
值,即1/rank
,这样rank越高,值就越低will 和 rank = 1
将得到 1 分。唯一能做到这一点的是 倒数
"field_value_factor": {
"field": "rank",
"factor": 1.2,
"modifier": "reciprocal",
"missing": 1
}
关于elasticsearch - 在 Elasticsearch 中,如何通过排名(第一、第二、第三……)字段的值来提高分数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42307190/