elasticsearch - 在 Elasticsearch 中,如何通过排名(第一、第二、第三……)字段的值来提高分数?

标签 elasticsearch relevance

我在文档中有一个字段是排名:值越低,分数应该越高。成为第一是最好的,但成为最后是最糟糕的。因此排名 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/

相关文章:

php - Mysql 搜索 2 列并按更相关的顺序排序

solr - 根据 Solr 多值字段的负载增加分数

java - 在logstash中使用jdbc输入插件时的时间变化

php - ElasticSearch 在 MySQL 中的使用

elasticsearch - 基于字段值计数的ElasticSearch提升相关性

solr - "match all docs"查询中 solr 中的结果如何排序

elasticsearch - 在Elasticsearch中查询IP字段

elasticsearch - 来自术语聚合的子聚合的准确性

java - 从 Spark 类路径中删除 Jars

search - ElasticSearch 中第一个词的得分更高