如何在计算自定义分数之前获取文档的当前分数

时间:2012-11-29 20:43:04

标签: elasticsearch

我正在用Java创建一个用于评分文档的自定义脚本。我想在进入自定义记分员之前尝试获取文档的分数。

看来你可以这么做:     “_score * doc ['my_numeric_field']。value / pow(param1,param2)”

和_score会给你分数。我没有看到使用Java API获得分数的任何有效方法。

注意:我已经尝试过doc()。getScore(),而且似乎总是会给出一个空指针异常。

额外奖励:我如何获得其他文档字段,例如_boost或_index?

1 个答案:

答案 0 :(得分:2)

本机脚本相当于“_score * doc ['my_numeric_field']。value / pow(param1,param2)”将是:

@Override
public float runAsFloat() {
    return score() * doc().numeric("my_numeric_field").getFloatValue() / divider;
}

您可以在工厂方法中计算pow(param1, param2),因为它在runAsFloat()次执行之间不会更改。

如果_index字段为enabled,则可以按以下方式访问:

doc().field("_index").getStringValue()

我建议使用查询时间提升而不是索引时间提升。