概要
FieldMatchWeighted クラスは、検索クエリの FieldMatchWeighted スコアを計算するために使用されます。スコアは、検索クエリが指定されたインデックスの指定されたフィールドにどの程度一致するかを示します。検索クエリが指定されたフィールドでヒットする用語が多いほど、加重スコアと FieldMatchWeighted スコアが高くなります。検索クエリの FieldMatchWeighted スコアは、baseScore と bonusScore で構成されます。スコアは、次の式を使用して計算されます。(A × baseScore + bonusScore)/(A + 1)。変数 A は baseScore の重みを示します。次の図は、baseScore の計算ロジックを示しています。 tw は用語の重みを表します。値はクエリ分析後に生成されます。デフォルト値は 1 です。bonusScore は加重スコアです。bonusScore は、検索クエリがフィールドと完全に一致する場合、または検索クエリがフィールドに含まれる場合にのみ有効になります。FieldMatchWeighted オブジェクトに提供されている関数を使用して、変数 A と bonusScore を設定できます。
関数
関数 | 説明 |
FieldMatchWeighted create(OpsScorerInitParams params, CString indexName, CString fieldName) | FieldMatchWeighted オブジェクトを作成します。 |
void setGroupScoreMergeOp(CString opName) | 複数のクエリグループの FieldMatchWeighted スコアの集計方法を設定します。サポートされている集計方法は、sum と max です。デフォルトの集計方法は sum です。 |
void setParamA(double paramA) | 変数 A を設定します。 |
void setExactMatchBonus(double exactMatchBonus) | 検索クエリがフィールドと完全に一致する場合の加重スコアを設定します。 |
void setNgramMatchBonus(double ngramMatchBonus) | 検索クエリがフィールドに含まれる場合の加重スコアを設定します。 |
double evaluate(OpsScoreParams params) | クエリ用語と特定のフィールドとの近接度を計算します。 |
関数の詳細
FieldMatchWeighted create(OpsScorerInitParams params, CString indexName, CString fieldName)
FieldMatchWeighted オブジェクトを作成します。この関数を呼び出すときは、インデックス名とフィールド名を指定する必要があります。パラメータ: params: 初期化に使用されるパラメータ。OpsScorerInitParams を参照してください。indexName: インデックスの名前。名前は定数である必要があります。fieldName: 指定されたインデックス内のフィールドの名前。名前は定数である必要があります。フィールドは TEXT または SHORT_TEXT タイプである必要があります。アナライザーは、中国語の汎用アナライザー、カスタムアナライザー、中国語の単一文字アナライザー、英語のアナライザー、またはあいまい検索のアナライザーを使用できます。
void setGroupScoreMergeOp(CString opName)
複数のクエリグループの FieldMatchWeighted スコアの集計方法を設定します。サポートされている集計方法は、sum と max です。デフォルトの集計方法は sum です。この関数は、スコア計算オブジェクトの初期化中にのみ呼び出すことができます。クエリグループは、元の検索クエリがアナライザーによって処理された後に生成されます。デフォルトでは、クエリグループは 1 つだけ存在します。パラメータ: opName: 複数のクエリグループの FieldMatchWeighted スコアを集計するために使用されるメソッド。サポートされている集計方法は、max と sum です。
void setParamA(double paramA)
変数 A を設定します。このパラメータは、全体スコアにおける baseScore の重みを指定します。この関数は、スコア計算オブジェクトの初期化中にのみ呼び出すことができます。パラメータ: paramA: 変数 A に割り当てる値。デフォルト値: 0.5。
void setExactMatchBonus(double exactMatchBonus)
検索クエリがフィールドと完全に一致する場合の加重スコアを設定します。この関数は、スコア計算オブジェクトの初期化中にのみ呼び出すことができます。パラメータ: exactMatchBonus: 加重スコア。デフォルト値: 1.0。
void setNgramMatchBonus(double ngramMatchBonus)
検索クエリがフィールドに含まれる場合の加重スコアを設定します。この関数は、スコア計算オブジェクトの初期化中にのみ呼び出すことができます。パラメータ: ngramMatchBonus: 加重スコア。デフォルト値: 0.6。
double evaluate(OpsScoreParams params)
検索クエリが指定されたインデックスの指定されたフィールドにどの程度一致するかを計算します。パラメータ: params: スコア計算に使用されるパラメータ。OpsScoreParams を参照してください。戻り値: 検索クエリと指定されたインデックスの指定されたフィールドとのテキスト関連性。有効な値: [0,1]。サンプルコード:
package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.features.similarity.fieldmatch.FieldMatchWeighted;
class BasicSimilarityScorer {
FieldMatchWeighted _f1;
boolean init(OpsScorerInitParams params) {
_f1 = FieldMatchWeighted.create(params, "title_index", "title");
_f1.setGroupScoreMergeOp("max");
_f1.setParamA(1);
_f1.setExactMatchBonus(0.5);
_f1.setNgramMatchBonus(0.3);
return true;
}
double score(OpsScoreParams params) {
return _f1.evaluate(params);
}
}