概要
KeyWordsMatchedクラスは、検索クエリのキーワードと特定のフィールドとの近接度を測定するために使用されます。検索クエリの分析後、フィールドに用語が出現しない場合は0が返されます。検索クエリのキーワードがフィールドに出現する場合は0.5が返されます。検索クエリの分析後のすべての用語がフィールドに出現する場合は1.0が返されます。たとえば、検索クエリがA AND B RANK Cの場合、用語A、B、Cのいずれも指定されたフィールドに出現しない場合、戻り値は0です。用語AとBのみがフィールドに出現する場合、戻り値は0.5です。用語A、B、Cのすべてがフィールドに出現する場合、戻り値は1.0です。検索クエリのキーワードは2つの方法で決定されます。アナライザーが使用される場合、キーワードはアナライザーの出力情報に基づいてスコア計算中に決定されます。それ以外の場合、キーワードは検索クエリ内の用語の組み合わせのロジックに基づいて決定されます。
関数
関数 | 説明 |
---|---|
KeyWordsMatched create(OpsScorerInitParams params, CString indexName, CString fieldName) | FieldMatchWeightedオブジェクトを作成します。この関数はファクトリ関数です。 |
void setGroupScoreMergeOp(CString opName) | 複数のクエリグループのKeyWordsMatchedスコアの集計方法を設定します。サポートされている集計方法は、sumとmaxです。デフォルトの集計方法はsumです。 |
double evaluate(OpsScoreParams params) | 検索クエリのキーワードと特定のフィールドとの近接度を計算します。 |
関数の詳細
KeyWordsMatched create(OpsScorerInitParams params, CString indexName, CString fieldName)
KeyWordsMatchedオブジェクトを作成します。一致させるインデックスとフィールドを指定する必要があります。パラメーター:params:初期化に使用されるパラメーター。詳細については、OpsScorerInitParamsを参照してください。indexName:インデックスの名前。名前は定数である必要があります。fieldName:指定されたインデックス内のフィールドの名前。名前は定数である必要があります。フィールドはTEXTまたはSHORT_TEXT型である必要があります。アナライザーは、中国語の汎用アナライザー、カスタムアナライザー、中国語の単一文字アナライザー、英語のアナライザー、またはあいまい検索のアナライザーを使用できます。
void setGroupScoreMergeOp(CString opName)
複数のクエリグループのKeyWordsMatchedスコアの集計方法を設定します。サポートされている集計方法は、sumとmaxです。デフォルトの集計方法はsumです。この関数は、スコア計算オブジェクトの初期化中にのみ呼び出すことができます。クエリグループは、元の検索クエリがアナライザーによって処理された後に生成されます。デフォルトでは、クエリグループは1つだけです。パラメーター:opName:複数のクエリグループのKeyWordsMatchedスコアを集計するために使用されるメソッド。サポートされている集計方法は、maxとsumです。
double evaluate(OpsScoreParams params)
検索クエリのキーワードと特定のフィールドとの近接度を計算します。パラメーター:params:スコア計算に使用されるパラメーター。詳細については、OpsScoreParamsを参照してください。戻り値:検索クエリのキーワードと指定されたフィールドとの近接度。有効な値:0、0.5、1.0。サンプルコード:
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.KeyWordsMatched;
class BasicSimilarityScorer {
KeyWordsMatched _f1;
boolean init(OpsScorerInitParams params) {
_f1 = KeyWordsMatched.create(params, "pack_index1", "text_field");
return true;
}
double score(OpsScoreParams params) {
return _f1.evaluate(params);
}
};