我可以根据elasticsearch中我的自定义字段的最大分数和/或最大值来重新调整吗?

时间:2014-05-23 12:32:53

标签: elasticsearch

我想要做的就是根据这个公式重新评分我的查询,

NEW SCORE = OLD SCORE / max(OLD SCORES)+ doc.value [' custom'] / max(doc.value [' custom'])

这可能吗?我可以使用以下代码重新编写

{ 
      "query": {
      "function_score": {
      "query": {}
     , "script_score": {
       "script": "_score * doc['custom'].value"
       }
      }
     }
 }

此外,如果有人能告诉如何在另一个脚本中使用一个脚本的值,那就太好了。

1 个答案:

答案 0 :(得分:0)

不确定它是否符合你的需要,但也许你可以使用一些展平应用程序,你可以强制最大分数为1,假设你可以找到一个得分值(score_thresh)高于无论如何结果都很好,您的字段doc.value['custom']将执行排名工作。

一种方法,例如:

1 / (score_thresh - min(_score, score_thresh - 1))

可以做到这一点,但你的得分曲线有点苛刻。它对我有用,因为我想从old_score中选择的是选择文档,一个负责排名的rescore查询。