1

我正在用 Java 创建一个自定义脚本来为文档评分。我希望在进入自定义记分器之前尝试获取文档的分数。

在 mvel 中,您似乎可以这样做:“_score * doc['my_numeric_field'].value / pow(param1, param2)”

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

注意:我已经尝试过 doc().getScore() 并且似乎总是给出空指针异常。

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

4

1 回答 1

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了字段,则可以像这样访问它:

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

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

于 2012-12-03T14:36:31.150 回答