概要
BM25F クラスは、BM25 クラスに基づいて、クエリ用語と複数の指定されたフィールドのテキスト関連性を計算するために使用されます。フィールドに異なる重みを指定でき、BM25F クラスは、フィールド内のクエリ用語の BM25 スコアをマージします。次の図は、BM25F スコアの計算に使用される式を示しています。
関数
関数 | 説明 |
BM25F create(OpsScorerInitParams params,CString indexName) | 指定されたインデックスに基づいて BM25F オブジェクトを作成します。この関数はファクトリ関数です。 |
指定されたインデックスと、インデックス内の指定されたフィールドに基づいて BM25F オブジェクトを作成します。この関数はファクトリ関数です。 | |
void setGroupScoreMergeOp(CString opName) | 複数のクエリグループの BM25 スコアの集計方法を設定します。サポートされている集計方法は、sum と max です。デフォルトの集計方法は sum です。 |
void setParamK(double paramK) | K パラメータに値を割り当てます。 |
void setFieldParamB(CString fieldName, double paramB) | 指定されたフィールドの B パラメータに値を割り当てます。 |
void setTotalDocNum(long totalDocNum) | ドキュメントの総数を指定します。 |
void setFieldAvgLength(CString fieldName, int avgFieldLength) | 指定されたフィールドの平均長を指定します。 |
void setFieldWeight(CString fieldName, double fieldWeight) | 指定されたフィールドの重みを指定します。 |
double evaluate(OpsScoreParams params) | クエリ用語と指定されたフィールドの近接性を計算します。 |
関数の詳細
BM25F create(OpsScorerInitParams params,CString indexName)
指定されたインデックスに基づいて BM25F オブジェクトを作成します。このコンストラクターでは、フィールドを指定する必要はありません。デフォルトでは、指定されたインデックス内のすべてのフィールドが BM25F スコア計算に含まれます。params: 初期化に使用されるパラメーター。詳細については、OpsScorerInitParams を参照してください。indexName: インデックスの名前。名前は定数である必要があります。
BM25F create(OpsScorerInitParams params,CString indexName, CString[] fields)
指定されたインデックスと、インデックス内のフィールドのリストに基づいて BM25F オブジェクトを作成します。params: 初期化に使用されるパラメーター。詳細については、OpsScorerInitParams を参照してください。indexName: インデックスの名前。名前は定数である必要があります。fields: BM25F スコア計算に含めるフィールドのリスト。
void setGroupScoreMergeOp(CString opName)
複数のクエリグループの BM25 スコアの集計方法を設定します。サポートされている集計方法は、sum と max です。デフォルトの集計方法は sum です。この関数は、スコア計算オブジェクトの初期化中にのみ呼び出すことができます。クエリグループは、元の検索クエリがアナライザーによって処理された後に生成されます。クエリグループのデフォルトの数は 1 です。パラメーター: opName: 複数のクエリグループの BM25 スコアを集計するために使用される方法。サポートされている集計方法は、max と sum です。
void setParamK(double paramK)
パラメーターに値を割り当てます。この関数は、スコア計算オブジェクトの初期化中にのみ呼び出すことができます。パラメーター: paramK:
パラメーターに割り当てる値。デフォルト値: 2.0。
void setFieldParamB(CString fieldName, double paramB)
B パラメーターに値を割り当てます。この関数は、スコア計算オブジェクトの初期化中にのみ呼び出すことができます。パラメーター: fieldName: 指定されたインデックス内のフィールドの名前。現在の BM25F オブジェクトのコンストラクターでフィールドのリストが指定されている場合、fieldName パラメーターの値は指定されたリストに属し、文字列定数である必要があります。paramB: B パラメーターに割り当てる値。デフォルト値: 0.1。
void setTotalDocNum(long totalDocNum)
アプリケーション内のドキュメントの総数を指定します。この関数は、スコア計算オブジェクトの初期化中にのみ呼び出すことができます。パラメーター: totalDocNum: ドキュメントの総数。デフォルト値: 92000000。
void setFieldAvgLength(CString fieldName, int avgFieldLength)
指定されたフィールドの平均長を指定します。この関数は、スコア計算オブジェクトの初期化中にのみ呼び出すことができます。パラメーター: fieldName: 指定されたインデックス内のフィールドの名前。現在の BM25F オブジェクトのコンストラクターでフィールドのリストが指定されている場合、fieldName パラメーターの値は指定されたリストに属し、文字列定数である必要があります。avgFieldLength: 指定されたフィールドに設定する平均長。デフォルト値: 20。
void setFieldWeight(CString fieldName, double fieldWeight)
指定されたフィールドの重みを指定します。この関数は、スコア計算オブジェクトの初期化中にのみ呼び出すことができます。パラメーター: fieldName: 指定されたインデックス内のフィールドの名前。現在の BM25F オブジェクトのコンストラクターでフィールドのリストが指定されている場合、fieldName パラメーターの値は指定されたリストに属し、文字列定数である必要があります。fieldWeight: 指定されたフィールドに設定する重み。デフォルト値: 1.0。
double evaluate(OpsScoreParams params)
指定されたフィールド内のクエリ用語の BM25F スコアを計算します。パラメーター: params: スコア計算に使用されるパラメーター。詳細については、OpsScoreParams を参照してください。戻り値: 指定されたフィールド内のクエリ用語の BM25F スコア。有効な値: [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.BM25F;
class BasicSimilarityScorer {
BM25F _f1;
boolean init(OpsScorerInitParams params) {
CString[] fields1 = {"title", "body"};
_f1 = BM25F.create(params, "default", fields1);
_f1.setFieldAvgLength("title", 10);
_f1.setFieldWeight("title", 10D);
_f1.setFieldParamB("title", 0.6);
_f1.setFieldAvgLength("body", 100);
_f1.setFieldWeight("body", 2D);
_f1.setFieldParamB("body", 0.5);
return true;
}
double score(OpsScoreParams params) {
return _f1.evaluate(params);
}
};