在 Elasticsearch 中,如何通过排名(第一、第二、第三……)字段的值来提高分数?
In Elasticsearch, how do you boost a score by the value of a ranking (1st, 2nd, 3rd...) field?
我在文档中有一个字段是排名:值越低,得分越高。第一个是最好的,但最后一个是最坏的。所以排名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 = 1
将得到 1 分。唯一做到这一点的是 reciprocal
"field_value_factor": {
"field": "rank",
"factor": 1.2,
"modifier": "reciprocal",
"missing": 1
}
我在文档中有一个字段是排名:值越低,得分越高。第一个是最好的,但最后一个是最坏的。所以排名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 = 1
将得到 1 分。唯一做到这一点的是 reciprocal
"field_value_factor": {
"field": "rank",
"factor": 1.2,
"modifier": "reciprocal",
"missing": 1
}