0

StackOverflowcrowd さん、こんにちは。

現在、私のウェブサイトのelasticsearchに取り組んでいます。私の質問は: フィールドの値に応じてクエリをブーストすることは可能ですか?

例: プレミアムレベルというフィールドがあります。「Datarow」に 4 のプレミアム レベルが含まれている場合、ブースト値は 40 になり、3 の場合、ブースト値は 30 になります。Boost = フィールド値に 10 を掛けた値

このようなクエリを実現する方法はありますか? 範囲のある日付の同様のクエリへの方法を見ましたが、フィールドの実際の値がブースト値の計算に使用される例は見つかりませんでした。

編集:

私の質問に対する解決策を見つけたと思います。ドキュメンテーションが正しければ、CustomScore クエリで目標を達成できるかもしれません。完全にテストした後、コードニペットでこの回答を編集します。

これは Documentationparagraph です: http://www.elasticsearch.org/guide/reference/query-dsl/custom-score-query.html

追伸: 私の正直な意見では、8 時間が経過する前に新規ユーザーが自分の質問に回答することを許可しないというルールは、論理的でも生産的でもありません。

4

1 に答える 1

0

あなたが望むことをするために私が考えることができる唯一の方法は、実際にブースト値にインデックスを付けることです:

ドキュメントから:http ://www.elasticsearch.org/guide/reference/mapping/boost-field.html

{
  "tweet" : {
    "_boost" : {"name" : "_boost", "null_value" : 1.0}
  }
}

上記のマッピングは、_boostという名前のフィールドのマッピングを定義します。_boostフィールドがインデックス付けされたJSONドキュメント内に存在する場合、その値はインデックス付けされたドキュメントのブーストレベルを制御します。

于 2013-01-21T03:16:46.100 に答える