QueryMatchRatio は、検索クエリの term のうち、インデックス (すべてのフィールドまたは特定のフィールド) にヒットした割合を計算します。カスタムスコアラー内で使用して、term カバー率の信号をドキュメントランキングに組み込みます。
計算式: ヒットした term 数 / インデックス内の総 term 数
戻り値の範囲は [0, 1] です。
概要
OpenSearch のインデックスには複数のフィールドを含めることができます。検索クエリの term がいずれかのフィールドにヒットすると、対応するドキュメントが返されます。QueryMatchRatio は、クエリがインデックスをどの程度カバーしているかを、2 つの粒度レベルで測定します:
すべてのフィールド:インデックスのいずれかのフィールドにヒットしたクエリ term の、インデックス内のすべての term に対する比率
特定のフィールド:インデックスの指定されたフィールドにヒットしたクエリ term の、インデックス内のすべての term に対する比率
例: デフォルトのインデックスに title と body の 2 つのフィールドがあるとします。クエリ default:'User Guide' に対して、以下を計算できます:
titleとbodyの両方にまたがるマッチ率titleのみのマッチ率bodyのみのマッチ率
メソッド
| メソッド | 説明 | 戻り値の型 | 戻り値の範囲 |
|---|---|---|---|
QueryMatchRatio create(OpsScorerInitParams params) | デフォルトインデックスのすべてのフィールドにわたるマッチ率を測定する QueryMatchRatio を作成します。 | QueryMatchRatio | — |
QueryMatchRatio create(OpsScorerInitParams params, CString indexName) | 指定されたインデックスのすべてのフィールドにわたるマッチ率を測定する QueryMatchRatio を作成します。 | QueryMatchRatio | — |
QueryMatchRatio create(OpsScorerInitParams params, CString indexName, CString fieldName) | 指定されたインデックスの特定のフィールド内のマッチ率を測定する QueryMatchRatio を作成します。 | QueryMatchRatio | — |
void setGroupScoreMergeOp(CString opName) | 複数のクエリグループからのスコアをどのように組み合わせるかを設定します。サポートされている値: sum (デフォルト)、max。 | void | — |
double evaluate(OpsScoreParams params) | オブジェクトの作成時に設定されたフィールドのマッチ率を計算します。 | double | [0, 1] |
メソッドの詳細
create(OpsScorerInitParams params)
デフォルトインデックスのすべてのフィールドにわたるマッチ率を測定する QueryMatchRatio を作成します。
パラメーター
| パラメーター | 型 | 説明 |
|---|---|---|
params | OpsScorerInitParams | 初期化パラメーター。 詳細については、「OpsScorerInitParams」をご参照ください。 |
create(OpsScorerInitParams params, CString indexName)
指定されたインデックスのすべてのフィールドにわたるマッチ率を測定する QueryMatchRatio を作成します。
パラメーター
| パラメーター | 型 | 説明 |
|---|---|---|
params | OpsScorerInitParams | 初期化パラメーター。 詳細については、「OpsScorerInitParams」をご参照ください。 |
indexName | CString | インデックス名。 定数である必要があります。 インデックスは、一般的な中国語アナライザ、カスタムアナライザ、1 文字の中国語アナライザ、英語アナライザ、またはあいまい検索アナライザを使用できます。 |
create(OpsScorerInitParams params, CString indexName, CString fieldName)
指定されたインデックスの特定のフィールド内のマッチ率を測定する QueryMatchRatio を作成します。
パラメーター
| パラメーター | 型 | 説明 |
|---|---|---|
params | OpsScorerInitParams | 初期化パラメーター。詳細については、「OpsScorerInitParams」をご参照ください。 |
indexName | CString | インデックス名。 定数である必要があります。 インデックスは、一般的な中国語アナライザ、カスタムアナライザ、1 文字の中国語アナライザ、英語アナライザ、またはあいまい検索アナライザを使用できます。 |
fieldName | CString | indexName で指定されたインデックス内のフィールドの名前。 定数である必要があります。 |
setGroupScoreMergeOp(CString opName)
複数のクエリグループからのテキスト関連度スコアをどのように組み合わせるかを設定します。
アナライザは、元の検索クエリを 1 つ以上のクエリグループに分割します。 デフォルトでは、クエリグループは 1 つだけです。
このメソッドは、スコアラーの初期化中にのみ呼び出してください。
パラメーター
| パラメーター | 型 | 説明 |
|---|---|---|
opName | CString | クエリグループスコアの集計方法。 有効な値: sum (デフォルト)、max。 |
evaluate(OpsScoreParams params)
オブジェクトの作成時に設定されたフィールドのマッチ率を計算します。
パラメーター
| パラメーター | タイプ | 説明 |
|---|---|---|
params | OpsScoreParams | OpsScoreParamsスコア計算パラメーター。 をご参照ください。 |
戻り値
設定されたフィールドにヒットしたクエリ term の、インデックス内のすべての term に対する比率。 範囲: [0, 1]。
例
次のスコアラーは、2 つの QueryMatchRatio 信号を組み合わせます。1 つは title_index にスコープされ、もう 1 つはデフォルトインデックスのすべてのフィールドをカバーします。 最終スコアはそれらの合計です。
package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.framework.OpsRequest;
import com.aliyun.opensearch.cava.framework.OpsDoc;
import com.aliyun.opensearch.cava.features.similarity.querymatch.QueryMatchRatio;
class BasicSimilarityScorer {
QueryMatchRatio _f1;
QueryMatchRatio _f2;
boolean init(OpsScorerInitParams params) {
_f1 = QueryMatchRatio.create(params, "title_index");
_f2 = QueryMatchRatio.create(params);
return true;
}
double score(OpsScoreParams params) {
return _f1.evaluate(params) + _f2.evaluate(params);
}
}