すべてのプロダクト
Search
ドキュメントセンター

OpenSearch:ソート式

最終更新日:Apr 02, 2026

ソート式を使用すると、OpenSearch Retrieval Engine Edition が検索結果をランク付けする方法をコントロールするカスタムスコアリングロジックを定義できます。スキーマの属性フィールド、組み込みの数学関数、特徴量関数を使用して、販売量によるプロダクトのブースティング、時間減衰関数による古いドキュメントへのペナルティ付与、位置情報サービス (LBS) のための地理的距離による結果の重み付けなど、ランキング戦略に合わせた式を構築します。

式は 2 つのステージで実行できます。

  • 粗いソート: large サンプル候補セットに対する第1段階のフィルタリングを実行します。first_formula パラメーターを使用します。

  • 詳細ソート: 絞り込まれたセットの正確な再ランキングです。formula パラメーターを使用します。

同じクエリで両方のステージを使用できます。組み合わせると、まず基本ソートでサンプル候補セットを絞り込み、次に高度ソートで結果を再ランク付けします。

基本ソート式は大量のドキュメントを処理します。大量のドキュメントをクエリする場合、基本ソート式で適切なドキュメント数を指定してください。式の評価に時間がかかりすぎると、クエリがタイムアウトする可能性があります。計算負荷の高い関数は、高度ソートステージで使用してください。

式の要素

ソート式は、3 種類の要素を組み合わせることができます。

タイプ説明
演算子算術、関係、論理、ビット単位、条件付き、およびセット演算子
組み込み関数汎用的な数学関数(lnpowsqrt、およびnow
フィーチャー関数ドメイン固有のランキング信号(gauss_decaydistance、およびtext_relevance など)— 「フィーチャー関数

演算子

操作オペレーター説明
単項-式の値を否定します。例:-1-max(width)
算術+-*/標準的な算術演算です。例:width/10
関係==!=><>=<=比較です。例:width >= 400
論理andor!ブール論理です。例:width >= 400 and height >= 300!(a > 1 and b < 2)
ビット単位&|^ビット単位の AND、OR、XOR です。例:3 & (price ^ pubtime) + (price | pubtime)
条件付きif(cond, thenValue, elseValue)cond がゼロ以外の場合は thenValue を返し、cond がゼロの場合は elseValue を返します。例:if(2, 3, 5)3 を返し、if(0, 3, 5)5 を返します。cond の値には文字列 (LITERAL または TEXT 型) を指定できません。値の範囲は INT32 と同じである必要があります。
INi in [value1, value2, …, valuen]i がセット内にある場合は 1 を返し、それ以外の場合は 0 を返します。例:2 in [2, 4, 6]1 を返し、3 in [2, 4, 6]0 を返します。

組み込み関数

関数説明
max(a, b)ab のうち大きい方の値を返します。
min(a, b)ab のうち小さい方の値を返します。
ln(a)a の自然対数 (e を底とする対数) を返します。
log2(a)a の 2 を底とする対数を返します。
log10(a)a の 10 を底とする対数を返します。
sin(a)a の正弦 (sin) を返します。
cos(a)a の余弦 (cos) を返します。
tan(a)a の正接 (tan) を返します。
asin(a)a の逆正弦 (arcsin) を返します。
acos(a)a の逆余弦 (arccos) を返します。
atan(a)a の逆正接 (arctan) を返します。
ceil(a)a 以上の最小の整数を返します。例:ceil(4.2)5 を返します。
floor(a)a 以下の最大の整数を返します。例:floor(4.6)4 を返します。
sqrt(a)a の平方根を返します。例:sqrt(4)2 を返します。
pow(a, b)ab 乗を返します。例:pow(2, 3)8 を返します。
now()1970-01-01 00:00:00 協定世界時 (UTC) からの経過秒数を返します。
random()0 から 1 までのランダム値を返します。

特徴量関数

特徴量関数は、ドメイン固有のランキング信号を提供します。各関数はそれぞれのページで説明されています。以下の表は、各関数がどのソートステージをサポートしているかを示しています。

関数説明概略ソート高度ソート
static_bm25クエリとドキュメント間の静的テキスト関連度スコア。サポート済み非サポート
exact_match_boost特定のクエリの最大重み。サポート済みサポート済み
timelinessドキュメントの適時性スコア。サポート済みサポート済み
timeliness_msドキュメントの適時性スコア。サポート済みサポート済み
normalize数値を [0, 1] の範囲に正規化します。サポート済みサポート済み
distance2 点間の球面距離。LBS ランキングでよく使用されます。サポート済みサポート済み
gauss_decay参照点からの距離に基づくガウス減衰スコア。サポート済みサポート済み
linear_decay参照点からの距離に基づく線形減衰スコア。サポート済みサポート済み
exp_decay参照点からの距離に基づく指数減衰スコア。サポート済みサポート済み
kvpairs_valuekvpairs 句で指定されたフィールドの値。サポート済みサポート済み
in/notinフィールド値が指定された値セットに含まれるか否かを返します。サポート済みサポート済み
tag_matchクエリキーワードをドキュメントタグと照合し、タグの重みによってスコア付けします。サポート済みサポート済み
first_phase_score基本ソート式によって生成されたスコア。高度ソートで一次ステージの結果を基に構築するために使用します。非サポートサポート済み
text_relevanceクエリキーワードと指定されたフィールド間の関連度スコア。非サポートサポート済み
field_match_ratioフィールド内の term の総数に対する、一致した term の比率。非サポートサポート済み
query_match_ratioクエリキーワードの総数に対する、一致したフィールド term の比率。非サポートサポート済み
fieldterm_proximityクエリキーワードとフィールド term 間の近接度。非サポートサポート済み
field_lengthフィールド内の term 数。非サポートサポート済み
query_term_countアナライザがクエリをトークン化した後の term 数。非サポートサポート済み
query_term_match_countドキュメント term と一致するクエリ term の数。非サポートサポート済み
field_term_match_countクエリと一致するフィールド term の数。非サポートサポート済み
query_min_slide_windowそれらの term を含む最小ウィンドウに対する、一致したフィールド term の比率。非サポートサポート済み

ソート式の適用

どちらの式タイプも kvpairs 句のパラメーターを使用します。応答でスコアリングロジックを検査するには、config 句に rank_trace:DEBUG を追加します。

基本ソート式

first_formula パラメーターで式を設定します。

config=start:0,hit:10,rank_trace:DEBUG,format:json&&query=default:'Search'&&kvpairs=first_formula:price*0.1

高度ソート式

formula パラメーターで式を設定します。

config=start:0,hit:10,rank_trace:DEBUG,format:json&&query=default:'Search'&&kvpairs=formula:price*0.1