概算ソートとは、取得されたすべてのドキュメントから上位 N 件の高品質ドキュメントを選択するプロセスです。次に、上位 N 件の高品質ドキュメントがスコアリングされ、精密ソートプロセスでソートされます。このようにして、ユーザーは要件に最も一致するドキュメントを取得できます。概算ソートは検索パフォーマンスに影響を与えますが、精密ソートは最終的なソート結果に影響を与えます。したがって、精密ソートの主要な要素を使用して、効率的かつ簡単な方法でドキュメントを概算ソートできます。ソート式を使用して、ドキュメントを概算ソートおよび精密ソートできます。このトピックでは、概算ソートに使用される特徴関数について説明します。
特徴関数
static_bm25(): クエリとドキュメントの一致度を示す静的テキスト関連度を返します。
構文: static_bm25()
パラメーター: なし
戻り値: 戻り値の型は FLOAT です。有効な値の範囲は 0 から 1 です。
シナリオ 1: 概算ソート式で static_bm25() 関数を使用して、テキストスコアを計算できます。
使用上の注意
デフォルトでは、デフォルトの概算ソート式を使用すると、static_bm25() が有効になります。
クエリに対してクエリ分析を設定している場合、static_bm25() 関数を使用して計算されたスコアは 1 を超えます。例:
デフォルトのクエリ句 query=index: '苹果' に同義語が設定されています。次に、クエリ句は query=index: '苹果' OR index:'apple' に変更されます。この場合、ドキュメントに 苹果 と apple の両方が含まれている場合、static_bm25() 関数を使用して 苹果 と apple に対して計算されたスコアが累積されます。つまり、最終的な概算ソートスコアは 1 より大きくなります。
exact_match_boost(): クエリ内の指定された用語の最大重みを計算します。
パラメーター: なし
戻り値: 戻り値の型は INT です。有効な値の範囲は 0 から 99 です。
シナリオ: クエリ句は query=default:'开放搜索'^60 OR default:'opensearch'^50 です。一致する用語に対してクエリ句で指定されたブースト重みに基づいて結果をソートします。たとえば、ドキュメント A には用語 开放搜索 が含まれ、ドキュメント B には用語 opensearch が含まれています。この場合、ドキュメント A はドキュメント B よりも上位にランクされます。概算ソート式は exact_match_boost() です。
使用上の注意
この関数の引数で参照するフィールドは、インデックスフィールドとして設定する必要があります。
クエリ句でブースト重みが指定されていない用語のデフォルトのブースト重みは 99 です。
exact_match_boost 関数が排他的アプリケーションの概算ソート式で使用される場合、関数パラメーターを 'sum' と 'max' に設定できます。
timeliness: ドキュメントの新しさを示す適時性スコアを返します。
pubtime: 適時性を評価するフィールド。フィールド値は、秒単位の INT 型である必要があります。
戻り値: 戻り値の型は FLOAT です。有効な値の範囲は 0 から 1 です。値が大きいほど、適時性が高いことを示します。フィールドの値が現在の時刻より後の場合、0 が返されます。
シナリオ: 概算ソート式で timeliness(create_timestamp) 関数を使用して、create_timestamp フィールドで指定されたドキュメントの適時性スコアを計算できます。
使用上の注意
pubtime フィールドは、属性フィールドとして設定する必要があります。
timeliness_ms: ドキュメントの新しさを示す適時性スコアを返します。
pubtime: 適時性を評価するフィールド。フィールド値は、ミリ秒単位の INT 型である必要があります。
戻り値: 戻り値の型は FLOAT です。有効な値の範囲は 0 から 1 です。値が大きいほど、適時性が高いことを示します。フィールドの値が現在の時刻より後の場合、0 が返されます。
シナリオ: 概算ソート式で timeliness_ms(create_timestamp) 関数を使用して、create_timestamp フィールドで指定されたドキュメントの適時性スコアを計算できます。
使用上の注意
pubtime フィールドは、属性フィールドとして設定する必要があります。
normalize: 異なる値範囲のスコアを 0 から 1 の範囲の数値に正規化します。
シナリオの概要: ドキュメントの関連度は、さまざまな次元から計算されます。異なる次元から計算されたスコアは、異なる値範囲にある場合があります。たとえば、Web ページのクリック数は数百万回になる可能性がありますが、Web ページのテキスト関連度スコアは 0 から 1 の値です。このような異なる値範囲の値を比較することはできません。normalize 関数は、異なる値範囲のスコアを同じ値範囲のスコアに正規化できます。このようにして、正規化されたスコアをさらに計算に使用できます。normalize 関数は、線形正規化、対数正規化、逆正接正規化の 3 つの正規化方法をサポートしています。関数は、入力パラメーターに基づいて正規化方法を自動的に選択します。value パラメーターのみが設定されている場合、normalize 関数は正規化に逆正接関数を使用します。value パラメーターと max パラメーターの両方が設定されている場合、normalize 関数は正規化に対数関数を使用します。value、max、min の各パラメーターがすべて設定されている場合、normalize 関数は正規化に線形関数を使用します。
value: フィールド値または戻り値を正規化するドキュメント内のフィールドまたは式。フィールド値または戻り値は DOUBLE 型である必要があります。max: 正規化後の値範囲の最大値。このパラメーターは省略可能です。最大値は DOUBLE 型である必要があります。min: 正規化後の値範囲の最小値。このパラメーターは省略可能です。最小値は DOUBLE 型である必要があります。
戻り値: 戻り値の型は DOUBLE です。有効な値の範囲は 0 から 1 です。
シナリオ 1: price フィールドの値を正規化したいが、price フィールドの値範囲がわからない場合。この場合、normalize 関数を次の構文で使用できます: normalize(price)。
シナリオ 2: price フィールドの値を正規化したいが、price フィールドの最大値が 100 であることのみわかっている場合。この場合、normalize 関数を次の構文で使用できます: normalize(price, 100)。
シナリオ 3: price フィールドの値を正規化したいが、price フィールドの最大値が 100 で最小値が 1 であることがわかっている場合。この場合、normalize 関数を次の構文で使用できます: normalize(price, 100, 1)。
シナリオ 4: distance 関数の戻り値を 0 から 1 の値に正規化したい場合。この場合、normalize 関数を次の構文で使用できます: normalize(distance(longitude_in_doc, latitude_in_doc, longitude_in_query, latitude_in_query))。
使用上の注意
関数で参照されるフィールドは、属性フィールドとして設定する必要があります。
逆正接関数が正規化に使用され、フィールド値または指定された式の戻り値が 0 より小さい場合、normalize 関数の戻り値は 0 です。
対数関数が正規化に使用される場合、max パラメーターの値は 1 より大きくなければなりません。
線形関数が正規化に使用される場合、max パラメーターの値は min パラメーターの値より大きくなければなりません。
category_score: パラメーターで指定されたカテゴリフィールドとカテゴリ予測クエリで取得されたカテゴリ間の一致スコアを返すカテゴリ予測関数
構文
category_score(cate_id)
パラメーター
cate_id: モデル学習のカテゴリ ID として使用されるフィールド。このフィールドは INT 型である必要があります。
戻り値の型は INT です。有効な値の範囲は 0 から 2 です。
シナリオ: ソート式で category_score(cate_id) 関数を設定できます。詳細については、カテゴリ予測機能の使用 を参照してください。
使用上の注意
この関数は、カテゴリ予測 機能と一緒に使用する必要があります。