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

OpenSearch:ラフソート関数

最終更新日:Apr 25, 2026

検索ランキングは通常、2 段階のプロセスで実行されます。第 1 段階である 基本ソート では、初期検索結果を迅速にフィルターし、高品質なドキュメントの小さなセットを抽出します。第 2 段階である 高度ソート では、このセットに対してより複雑なスコアリングロジックを適用し、最終的なランキングを生成します。基本ソートは検索パフォーマンスに大きな影響を与え、高度ソートはランキング品質により大きな効果をもたらします。そのため、基本ソートはシンプルかつ効率的である必要があり、最も重大なランキング要因のみを使用する必要があります。基本ソートおよび高度ソートの両方は、ソート式を使用して構成されます。本トピックでは、基本ソートで使用可能な特徴量関数について説明します。

特徴量関数

static_bm25:静的テキスト関連性の計算

  1. 構文:static_bm25()

  2. パラメーター:なし。

  3. 戻り値:[0.0, 1.0] の範囲の浮動小数点値。

  4. 利用シーン:基本ソート式で静的テキスト関連性スコアを組み込む場合に、この関数を使用します。例:static_bm25()

  5. 注意事項:

    • static_bm25() 関数は、default 基本ソート構成でデフォルトで有効になっています。

説明

static_bm25() スコアが 1.0 を超える可能性がある場合:

クエリで類義語などの分析機能が使用されている場合(例:クエリ index:'Apple'query=index:'Apple' OR index:'apple' に展開される場合)、両方の 'Apple' および 'apple' に一致するドキュメントに対して static_bm25() スコアが累積され、最終的な基本ソートスコアが 1 を超えることがあります。

exact_match_boost:最大ブースト重みの取得

  1. 構文:exact_match_boost()

  2. パラメーター:なし。

  3. 戻り値:[0, 99] の範囲の整数。

  4. 利用シーン:一致した語のブースト重みに基づいてドキュメントをランキングしたい場合に使用します。たとえば、クエリ query=default:'OpenSearch'^60 OR default:'opensearch'^50 では、「OpenSearch」を含むドキュメントが「opensearch」を含むドキュメントよりも上位にランク付けされます。基本ソート式は次のようになります:exact_match_boost()

  5. 注意事項:

    • クエリで参照されるフィールドは、インデックスフィールドとして構成されている必要があります。

    • ブーストが指定されていないクエリ語のデフォルトブースト値は 99 です。

    • 専用アプリケーションの場合、基本ソートで exact_match_boost 関数を使用する際に、オプションパラメーターとして sum および max がサポートされています。

timeliness:適時性スコアの計算

  1. 構文:timeliness(pubtime)

  2. パラメーター:pubtime:評価対象のフィールド。UNIX タイムスタンプ(秒単位)を表す整数である必要があります。

  3. 戻り値:[0.0, 1.0] の範囲の浮動小数点値。値が高いほど、ドキュメントが新しいことを示します。タイムスタンプが未来の場合は 0.0 を返します。

  4. 利用シーン:create_timestamp フィールドに基づいてドキュメントの新しさを考慮するには、次の式を使用します:timeliness(create_timestamp)

  5. 注意事項:

    • pubtime フィールドは、属性フィールドとして構成されている必要があります。

timeliness_ms:適時性スコアの計算

  1. 構文:timeliness_ms(pubtime)

  2. パラメーター:pubtime:評価対象のフィールド。UNIX タイムスタンプ(ミリ秒単位)を表す整数である必要があります。

  3. 戻り値:[0.0, 1.0] の範囲の浮動小数点値。値が高いほど、ドキュメントが新しいことを示します。タイムスタンプが未来の場合は 0.0 を返します。

  4. 利用シーン:create_timestamp フィールドに基づいてドキュメントの新しさを考慮するには、次の式を使用します:timeliness_ms(create_timestamp)

  5. 注意事項:

    • pubtime フィールドは、属性フィールドとして構成されている必要があります。

normalize:数値の正規化

  1. 概要:関連性計算において、ドキュメント品質はさまざまなディメンションで測定されます。これらのディメンションから得られるスコアは、多くの場合、値の範囲が大きく異なります。たとえば、ドキュメントのクリック数は数百万単位であるのに対し、テキスト関連性スコアは 0.0 ~ 1.0 の範囲です。これらは直接比較できません。複数の値を数式内で一緒に使用するには、まず共通のスケールに正規化する必要があります。normalize 関数はこれを簡単に行う方法を提供します。逆正接正規化(value パラメーターのみ指定)、対数正規化(value および max 指定)、線形正規化(valuemax、および min 指定)の 3 つのメソッドをサポートしており、指定されたパラメーターに基づいて自動的に選択されます。

  2. 構文:normalize(value, max, min)

  3. パラメーター:

  4. 戻り値:[0.0, 1.0] の範囲の倍精度浮動小数点値。

  5. 利用シーン 1:price フィールドの値の範囲が不明な場合の正規化:normalize(price)

    利用シーン 2:price フィールドの最大値(例:100)のみが分かっている場合の正規化:normalize(price, 100)

    利用シーン 3:price フィールドの最大値(100)および最小値(1)が分かっている場合の正規化:normalize(price, 100, 1)

    利用シーン 4:distance 関数の結果を [0.0, 1.0] の範囲に正規化:normalize(distance(longitude_in_doc, latitude_in_doc, longitude_in_query, latitude_in_query))

  6. 注意事項:

    • パラメーターとして使用するフィールドは、属性フィールドとして構成されている必要があります。

    • 逆正接正規化の場合、value が 0 未満のときは、関数は 0.0 を返します。

    • 対数正規化の場合、max 値は 1.0 より大きい必要があります。

    • 線形正規化の場合、max 値は min 値より大きい必要があります。

category_score:カテゴリ予測関数

説明: この関数は、ドキュメントのカテゴリがクエリの予測カテゴリとどの程度一致しているかを示すスコアを返します。

  1. 構文:

    category_score(cate_id)

  2. パラメーター:

    cate_idモデルトレーニング時のカテゴリ ID として使用するフィールド。整数である必要があります。

  3. 戻り値:[0, 2] の範囲の整数。

  4. 利用シーン:ソート式で category_score(cate_id) を使用します。詳細については、「カテゴリ予測機能の使用」をご参照ください。

  5. 注意事項:

    • この関数は、カテゴリ予測 アルゴリズムと併用する必要があります。