基本ソートは、取得されたすべての結果から上位 N 個のドキュメントを選択し、高度ソート段階に渡します。基本ソートは検索パフォーマンスに影響し、高度ソートは最終ランキング順序を決定します。両方の段階を設定するには、ソート式を使用します。このトピックでは、基本ソート式で利用可能なビルトイン関数について説明します。
機能関数
static_bm25()
クエリとドキュメント間の静的テキスト関連度スコアを返します。
| 項目 | 詳細 |
|---|---|
| [構文] | static_bm25() |
| [パラメーター] | なし |
| [戻り値の型] | FLOAT |
| [戻り値の範囲] | 0 から 1 |
デフォルトの動作: デフォルトの基本ソート式が使用される場合、static_bm25() はデフォルトでアクティブです。
クエリに対してクエリ分析が設定されている場合、スコアは 1 を超えることがあります。たとえば、query=index:'苹果'がquery=index:'苹果' OR index:'apple'に展開され、ドキュメントが両方の用語を含む場合、スコアが累積され、最終的な基本ソートスコアが 1 より大きくなります。
完全な仕様については、「static_bm25()」をご参照ください。
exact_match_boost()
クエリ句内の一致した用語の最大ブースト重みを返します。これにより、重みの高い用語に一致するドキュメントは、重みの低い用語に一致するドキュメントよりも上位にランク付けされます。
| 項目 | 詳細 |
|---|---|
| [構文] | exact_match_boost() |
| [パラメーター] | なし |
| [戻り値の型] | INT |
| [戻り値の範囲] | 0 から 99 |
例: クエリ句 query=default:'开放搜索'^60 OR default:'opensearch'^50 が与えられた場合、ドキュメント A (「开放搜索」を含む) は 60 のブーストを受け、ドキュメント B (「opensearch」を含む) は 50 のブーストを受けます。そのため、ドキュメント A の方が上位にランク付けされます。基本ソート式は exact_match_boost() です。
注意事項:
関数パラメーターで参照されるフィールドは、インデックスフィールドとして設定する必要があります。
クエリ句でブースト重みが指定されていない用語は、デフォルトのブースト重み 99 を受け取ります。
排他的なアプリケーションの場合、
sumまたはmaxフィールドを指定します。
完全な仕様については、「exact_match_boost()」をご参照ください。
timeliness()
ドキュメントの鮮度を示す適時性スコアを返します。タイムスタンプフィールドの単位は秒です。
| 項目 | 詳細 |
|---|---|
| [構文] | timeliness(pubtime) |
| [パラメーター] | pubtime — 評価するフィールド。INT 型である必要があり、単位は秒です。 |
| [戻り値の型] | FLOAT |
| [戻り値の範囲] | 0 から 1 (値が大きいほど新しい) |
[エッジケース:] フィールド値が現在時刻より後の場合、関数は 0 を返します。
例: 基本ソート式で timeliness(create_timestamp) を使用して、ドキュメントが作成された時期に基づいてスコアを付けます。
注意事項:
pubtimeフィールドは属性フィールドとして設定する必要があります。
完全な仕様については、「timeliness()」をご参照ください。
timeliness_ms()
ドキュメントの鮮度を示す適時性スコアを返します。タイムスタンプフィールドの単位はミリ秒です。
| 項目 | 詳細 |
|---|---|
| [構文] | timeliness_ms(pubtime) |
| [パラメーター] | pubtime — 評価するフィールド。INT 型である必要があり、単位はミリ秒です。 |
| [戻り値の型] | FLOAT |
| [戻り値の範囲] | 0 から 1 (値が大きいほど新しい) |
[エッジケース:] フィールドの値が現在時刻より後の場合、関数は 0 を返します。
例: 基本ソート式で timeliness_ms(create_timestamp) を使用して、ドキュメントが作成された時期に基づいてスコアを付けます。
注意事項:
pubtimeフィールドは属性フィールドとして設定する必要があります。
完全な仕様については、「timeliness_ms()」をご参照ください。
normalize()
フィールド値または式の結果を 0 から 1 の範囲の DOUBLE に正規化し、異なる値の範囲からのスコアを比較可能にします。正規化方法は、指定されたパラメーターに基づいて自動的に選択されます。
| 指定されたパラメーター | 正規化方法 |
|---|---|
value のみ | アークタンジェント |
value + max | 対数 |
value + max + min | 線形 |
構文: normalize(value, max, min)
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
value | DOUBLE | はい | 正規化する値を持つドキュメントフィールドまたは式 |
max | DOUBLE | いいえ | 期待される値の範囲の最大値 |
min | DOUBLE | いいえ | 期待される値の範囲の最小値 |
戻り値の型: DOUBLE (0 から 1)
例:
| シナリオ | 式 |
|---|---|
| 不明な値の範囲 | normalize(price) |
| 最大値のみが既知 (max = 100) | normalize(price, 100) |
| 既知の範囲 (max = 100, min = 1) | normalize(price, 100, 1) |
| 別の関数の結果を正規化 | normalize(distance(longitude_in_doc, latitude_in_doc, longtitude_in_query, latitude_in_query)) |
注意事項:
関数で参照されるフィールドは、属性フィールドとして設定する必要があります。
アークタンジェント方式: フィールド値または式の結果が 0 未満の場合、
normalize()は 0 を返します。対数方式:
maxは 1 より大きい必要があります。線形方式:
maxはminより大きい必要があります。
完全な仕様については、「normalize()」をご参照ください。