1

ドキュメントをスコアリングするために Java でカスタム スクリプトを作成しています。カスタムスコアラーに入る前に、ドキュメントのスコアを取得しようとしています。

mvelでは、「_score * doc['my_numeric_field'].value / pow(param1, param2)」を実行できるようです。

_score はスコアを表示するだけです。Java API でスコアを取得する効果的な方法がわかりません。

注: doc().getScore() を試してみましたが、常に null ポインター例外が発生するようです。

おまけ: _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()

_indexfield がenabledの場合、次のようにアクセスできます。

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

インデックス時間のブーストではなく、クエリ時間のブーストを使用することをお勧めします。

于 2012-12-03T14:36:31.150 に答える