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

OpenSearch:OpsKvPairs

最終更新日:Jan 13, 2025

概要

OpsKvPairs クラスは、カスタムキー値ペアを取得するために使用されます。カスタムキー値ペアの詳細については、kvpairs 句を参照してください。 OpsKvPairs クラスは、カスタムパラメータの値を処理できる一連の関数も提供します。たとえば、カスタムパラメータの値を配列に変換できます。

関数

関数

説明

CString getValue(CString key)

CString 型のカスタムパラメータの値を取得します。

long getLong(CString key)

CString 型のカスタムパラメータの値を取得し、その値を LONG 値に変換します。

float getFloat(CString key)

CString 型のカスタムパラメータの値を取得し、その値を FLOAT 値に変換します。

double getDouble(CString key)

CString 型のカスタムパラメータの値を取得し、その値を DOUBLE 値に変換します。

long[] getLongArray(CString key, CString sep)

指定された CString 型のカスタムパラメータの値を取得し、それらの値を LONG 型の配列に変換します。

float[] getFloatArray(CString key, CString sep)

指定された CString 型のカスタムパラメータの値を取得し、それらの値を FLOAT 型の配列に変換します。

double[] getDoubleArray(CString key, CString sep)

指定された CString 型のカスタムパラメータの値を取得し、それらの値を DOUBLE 型の配列に変換します。

関数の詳細

CString getValue(CString key)

CString 型のカスタムパラメータの値を取得します。カスタムパラメータは kvpairs 句で定義する必要があります。パラメータ: key: 取得するカスタムパラメータのキー。戻り値: カスタムパラメータの値。指定されたキーが存在しない場合、戻り値は 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 {
    CString flag;
    boolean init(OpsScorerInitParams params) {
        OpsRequest request = params.getRequest();
        OpsKvPairs kvparis = request.getKVPairs();
        flag = kvpairs.getValue("flag"); // kvpairs 句からキーが flag であるカスタムパラメータの値を取得します。
        return true;
    }

    double score(OpsScoreParams params) {
        if (flag != null && flag.equals("abc")) {
            //do something
        }
        return 0.0;
    }      
}

long getLong(CString key)

CString 型のカスタムパラメータの値を取得し、その値を LONG 値に変換します。パラメータ: key: 取得するカスタムパラメータのキー。戻り値: カスタムパラメータの値から変換された LONG 値。指定されたキーが存在しない場合、またはカスタムパラメータの値を LONG 値に変換できない場合、戻り値は 0 です。

サンプルコード:

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.OpsKvPairs;
class BasicSimilarityScorer {
    long flag;
    boolean init(OpsScorerInitParams params) {
        OpsRequest request = params.getRequest();
        OpsKvPairs kvparis = request.getKVPairs();
        flag = kvpairs.getLong("flag"); // kvpairs 句からキーが flag であるカスタムパラメータの値を取得し、その値を LONG 値に変換します。
        return true;
    }

    double score(OpsScoreParams params) {
        if (flag == 1) {
            //do something
        }
        return 0.0;
    }      
}

float getFloat(CString key)

CString 型のカスタムパラメータの値を取得し、その値を FLOAT 値に変換します。パラメータ: key: 取得するカスタムパラメータのキー。戻り値: カスタムパラメータの値から変換された FLOAT 値。指定されたキーが存在しない場合、またはカスタムパラメータの値を FLOAT 値に変換できない場合、戻り値は 0 です。

サンプルコード:

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.OpsKvPairs;
class BasicSimilarityScorer {
    float ratio;
    boolean init(OpsScorerInitParams params) {
        OpsRequest request = params.getRequest();
        OpsKvPairs kvparis = request.getKVPairs();
        ratio = kvpairs.getFloat("ratio"); // kvpairs 句からキーが flag であるカスタムパラメータの値を取得し、その値を FLOAT 値に変換します。
        return true;
    }

    double score(OpsScoreParams params) {
        if (ratio > 1) {
            //do something
        }
        return 0.0;
    }      
}

double getDouble(CString key)

CString 型のカスタムパラメータの値を取得し、その値を DOUBLE 値に変換します。パラメータ: key: 取得するカスタムパラメータのキー。戻り値: カスタムパラメータの値から変換された DOUBLE 値。指定されたキーが存在しない場合、またはカスタムパラメータの値を DOUBLE 値に変換できない場合、戻り値は 0 です。

サンプルコード:

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.OpsKvPairs;
class BasicSimilarityScorer {
    double ratio;
    boolean init(OpsScorerInitParams params) {
        OpsRequest request = params.getRequest();
        OpsKvPairs kvparis = request.getKVPairs();
        ratio = kvpairs.getDouble("ratio"); // kvpairs 句からキーが flag であるカスタムパラメータの値を取得し、その値を DOUBLE 値に変換します。
        return true;
    }

    double score(OpsScoreParams params) {
        if (ratio > 1) {
            //do something
        }
        return 0.0;
    }      
}

long[] getLongArray(CString key, CString sep)

指定された CString 型のカスタムパラメータの値を取得し、それらの値を LONG 型の配列に変換します。変換された値は、指定された区切り文字で区切られます。パラメータ: key: 取得するカスタムパラメータのキー。戻り値: 指定されたカスタムパラメータの値から変換された LONG 型の配列。指定されたキーが存在しない場合、またはカスタムパラメータの値を LONG 値に変換できない場合、戻り値は null です。

サンプルコード:

package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.framework.OpsDoc;
import com.aliyun.opensearch.cava.framework.OpsRequest;
import com.aliyun.opensearch.cava.framework.OpsKvPairs;
class BasicSimilarityScorer {
    long[] flags;
    boolean init(OpsScorerInitParams params) {
        OpsRequest request = params.getRequest();
        OpsKvPairs kvparis = request.getKVPairs();
        flags = kvparis.getLongArray("flags", ";"); 
        params.getDoc().requireAttribute("flag");
        return true;
    }

    double score(OpsScoreParams params) {
        long docFlag = params.getDoc().docFieldLong("flag");
        if (flag != null && flags.length > 0 && docFlag == flags[0]) {
            //do something
        }
        return 0.0;
    }      
}

float[] getFloatArray(CString key, CString sep)

指定された CString 型のカスタムパラメータの値を取得し、それらの値を FLOAT 型の配列に変換します。変換された値は、指定された区切り文字で区切られます。パラメータ: key: 取得するカスタムパラメータのキー。戻り値: 指定されたカスタムパラメータの値から変換された FLOAT 型の配列。指定されたキーが存在しない場合、またはカスタムパラメータの値を FLOAT 値に変換できない場合、戻り値は null です。

サンプルコード:

package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.framework.OpsDoc;
import com.aliyun.opensearch.cava.framework.OpsRequest;
import com.aliyun.opensearch.cava.framework.OpsKvPairs;
class BasicSimilarityScorer {
    float[] weights;
    boolean init(OpsScorerInitParams params) {
        OpsRequest request = params.getRequest();
        OpsKvPairs kvparis = request.getKVPairs();
        weights = kvparis.getFloatArray("weights", ";"); 
        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;
    }      
}

double[] getDoubleArray(CString key, CString sep)

指定された CString 型のカスタムパラメータの値を取得し、それらの値を DOUBLE 型の配列に変換します。変換された値は、指定された区切り文字で区切られます。パラメータ: key: 取得するカスタムパラメータのキー。戻り値: 指定されたカスタムパラメータの値から変換された DOUBLE 型の配列。指定されたキーが存在しない場合、またはカスタムパラメータの値を DOUBLE 値に変換できない場合、戻り値は null です。

サンプルコード:

package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.framework.OpsDoc;
import com.aliyun.opensearch.cava.framework.OpsRequest;
import com.aliyun.opensearch.cava.framework.OpsKvPairs;
class BasicSimilarityScorer {
    double[] weights;
    boolean init(OpsScorerInitParams params) {
        OpsRequest request = params.getRequest();
        OpsKvPairs kvparis = request.getKVPairs();
        weights = kvparis.getDoubleArray("weights", ";"); 
        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;
    }      
}