我正在用Java创建一个用于评分文档的自定义脚本。我想在进入自定义记分员之前尝试获取文档的分数。
看来你可以这么做: “_score * doc ['my_numeric_field']。value / pow(param1,param2)”
和_score会给你分数。我没有看到使用Java API获得分数的任何有效方法。
注意:我已经尝试过doc()。getScore(),而且似乎总是会给出一个空指针异常。
额外奖励:我如何获得其他文档字段,例如_boost或_index?
答案 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()
我建议使用查询时间提升而不是索引时间提升。