すべてのプロダクト
Search
ドキュメントセンター

OpenSearch:OpsKvPairs

最終更新日:Apr 01, 2026

OpsKvPairs は、受信クエリの kvpairs 句 からカスタムのキーと値のペアを読み取ります。また、文字列の値を数値型や配列に変換するため、ご利用のスコアラーは型付きデータを直接扱うことができます。

ご利用のスコアラーの init() メソッドで OpsKvPairs インスタンスを取得します。

OpsKvPairs kvpairs = params.getRequest().getKVPairs();

関数

関数説明キーが存在しない場合のデフォルト値
CString getValue(CString key)カスタムパラメーターの値を CString として返します。null
long getLong(CString key)カスタムパラメーターの値を long に変換して返します。0
float getFloat(CString key)カスタムパラメーターの値を float に変換して返します。0
double getDouble(CString key)カスタムパラメーターの値を double に変換して返します。0
long[] getLongArray(CString key, CString sep)カスタムパラメーターの値をデリミタで分割し、long[] を返します。null
float[] getFloatArray(CString key, CString sep)カスタムパラメーターの値をデリミタで分割し、float[] を返します。null
double[] getDoubleArray(CString key, CString sep)カスタムパラメーターの値をデリミタで分割し、double[] を返します。null

関数の詳細

すべての例で同じスコアラーのスケルトンを使用します。完全なクラス構造は以下に一度だけ示し、以降の例では関連する行のみを示します。

package users.scorer;
import cava.lang.CString;
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.OpsKvPairs;

class BasicSimilarityScorer {
    // フィールド宣言と init() / score() は以下の各例で示します
}

getValue(CString key)

カスタムパラメーターの値を CString として返します。キーは kvpairs 句で定義されている必要があります。

パラメーター: key — 取得するカスタムパラメーターのキー。

戻り値: パラメーターの値を CString として返します。キーが存在しない場合は null を返します。

class BasicSimilarityScorer {
    CString flag;

    boolean init(OpsScorerInitParams params) {
        OpsKvPairs kvpairs = params.getRequest().getKVPairs();
        flag = kvpairs.getValue("flag"); // "flag" が kvpairs 句にない場合は null
        return true;
    }

    double score(OpsScoreParams params) {
        if (flag != null && flag.equals("abc")) {
            // 何らかの処理を実行
        }
        return 0.0;
    }
}

getLong(CString key)

カスタムパラメーターの値を long に変換して返します。

パラメーター: key — 取得するカスタムパラメーターのキー。

戻り値: パラメーターの値を long として返します。キーが存在しない場合、または値を long に変換できない場合は 0 を返します。

// init() 内:
long flag = kvpairs.getLong("flag"); // "flag" が存在しないか、数値以外の場合は 0

// score() 内:
if (flag == 1) {
    // 何らかの処理を実行
}

getFloat(CString key)

カスタムパラメーターの値を float に変換して返します。

パラメーター: key — 取得するカスタムパラメーターのキー。

戻り値: パラメーターの値を float として返します。キーが存在しない場合、または値を float に変換できない場合は 0 を返します。

// init() 内:
float ratio = kvpairs.getFloat("ratio"); // "ratio" が存在しないか、数値以外の場合は 0

// score() 内:
if (ratio > 1) {
    // 何らかの処理を実行
}

getDouble(CString key)

カスタムパラメーターの値を double に変換して返します。

パラメーター: key — 取得するカスタムパラメーターのキー。

戻り値: パラメーターの値を double として返します。キーが存在しない場合、または値を double に変換できない場合は 0 を返します。

// init() 内:
double ratio = kvpairs.getDouble("ratio"); // "ratio" が存在しないか、数値以外の場合は 0

// score() 内:
if (ratio > 1) {
    // 何らかの処理を実行
}

getLongArray(CString key, CString sep)

カスタムパラメーターの値を指定されたデリミタで分割し、その部分を long[] として返します。

パラメーター:

  • key — 取得するカスタムパラメーターのキー。

  • sep — パラメーター値を分割するために使用されるデリミタ。

戻り値: 分割および変換された値の long[]。キーが存在しない場合、または値を long に変換できない場合は null を返します。

import com.aliyun.opensearch.cava.framework.OpsDoc;

class BasicSimilarityScorer {
    long[] flags;

    boolean init(OpsScorerInitParams params) {
        OpsKvPairs kvpairs = params.getRequest().getKVPairs();
        flags = kvpairs.getLongArray("flags", ";"); // "1;2;3" を [1, 2, 3] に分割します
        params.getDoc().requireAttribute("flag");
        return true;
    }

    double score(OpsScoreParams params) {
        long docFlag = params.getDoc().docFieldLong("flag");
        if (flags != null && flags.length > 0 && docFlag == flags[0]) {
            // 何らかの処理を実行
        }
        return 0.0;
    }
}

getFloatArray(CString key, CString sep)

カスタムパラメーターの値を指定されたデリミタで分割し、その部分を float[] として返します。

パラメーター:

  • key — 取得するカスタムパラメーターのキー。

  • sep — パラメーター値を分割するために使用されるデリミタ。

戻り値: 分割および変換された値の float[]。キーが存在しない場合、または値を float に変換できない場合は null を返します。

import com.aliyun.opensearch.cava.framework.OpsDoc;

class BasicSimilarityScorer {
    float[] weights;

    boolean init(OpsScorerInitParams params) {
        OpsKvPairs kvpairs = params.getRequest().getKVPairs();
        weights = kvpairs.getFloatArray("weights", ";"); // "0.5;0.3;0.2" を [0.5, 0.3, 0.2] に分割します
        params.getDoc().requireAttribute("flags");
        return true;
    }

    double score(OpsScoreParams params) {
        long[] docFlags = params.getDoc().docFieldLongArray("flags");
        if (docFlags == null || weights == null) {
            return 0.0;
        }
        double score = 0.0;
        if (weights.length == docFlags.length) {
            for (int i = 0; i < weights.length; ++i) {
                score += docFlags[i] * weights[i];
            }
        }
        return score;
    }
}

getDoubleArray(CString key, CString sep)

カスタムパラメーターの値を指定されたデリミタで分割し、その部分を double[] として返します。

パラメーター:

  • key — 取得するカスタムパラメーターのキー。

  • sep — パラメーター値を分割するために使用されるデリミタ。

戻り値: 分割および変換された値の double[]。キーが存在しない場合、または値を double に変換できない場合は null を返します。

import com.aliyun.opensearch.cava.framework.OpsDoc;

class BasicSimilarityScorer {
    double[] weights;

    boolean init(OpsScorerInitParams params) {
        OpsKvPairs kvpairs = params.getRequest().getKVPairs();
        weights = kvpairs.getDoubleArray("weights", ";"); // "0.5;0.3;0.2" を [0.5, 0.3, 0.2] に分割します
        params.getDoc().requireAttribute("flags");
        return true;
    }

    double score(OpsScoreParams params) {
        long[] docFlags = params.getDoc().docFieldLongArray("flags");
        if (docFlags == null || weights == null) {
            return 0.0;
        }
        double score = 0.0;
        if (weights.length == docFlags.length) {
            for (int i = 0; i < weights.length; ++i) {
                score += docFlags[i] * weights[i];
            }
        }
        return score;
    }
}