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

OpenSearch:Util

最終更新日:Dec 28, 2024

概要

Util クラスは、減衰関数や正規化関数など、頻繁に使用される一連の機能関数を提供します。

関数

関数

説明

static double gaussDecay(double origin, double value, double scale, double decay, double offset)

ガウス関数を使用して、値と指定された開始点の間の距離に基づいて減衰度を計算します。

static double gaussDecay(double origin, double value, double scale, double decay)

ガウス関数を使用して、値と指定された開始点の間の距離に基づいて減衰度を計算します。

static double gaussDecay(double origin, double value, double scale)

ガウス関数を使用して、値と指定された開始点の間の距離に基づいて減衰度を計算します。

static double expDecay(double origin, double value, double scale, double decay, double offset)

指数関数を使用して、値と指定された開始点の間の距離に基づいて減衰度を計算します。

static double expDecay(double origin, double value, double scale, double decay)

指数関数を使用して、値と指定された開始点の間の距離に基づいて減衰度を計算します。

static double expDecay(double origin, double value, double scale)

指数関数を使用して、値と指定された開始点の間の距離に基づいて減衰度を計算します。

static double linearDecay(double origin, double value, double scale, double decay, double offset)

線形関数を使用して、値と指定された開始点の間の距離に基づいて減衰度を計算します。

static double linearDecay(double origin, double value, double scale, double decay)

線形関数を使用して、値と指定された開始点の間の距離に基づいて減衰度を計算します。

static double linearDecay(double origin, double value, double scale)

線形関数を使用して、値と指定された開始点の間の距離に基づいて減衰度を計算します。

static double normalize(double value, double max, double min)

線形関数を使用して正規化します。

static double normalize(double value, double max)

対数関数を使用して正規化します。

static double normalize(double value)

逆正接関数を使用して正規化します。

関数の詳細

static double gaussDecay(double origin, double value, double scale, double decay, double offset)

ガウス関数を使用して、値と指定された開始点の間の距離に基づいて減衰度を計算します。この減衰関数を使用して数値をソートできます。指定された値の範囲内の数値をソートする必要はありません。たとえば、最寄りのホテルを検索する場合、近くのホテルは近い順にソートされ、100メートル未満のホテルはソートする必要はありません。この場合、distanceValueパラメーターを使用して距離を指定する場合、次の減衰関数を使用できます:gauss_decay(0, distanceValue, 5, 0.000001, 0.1)。

パラメーター:

  • origin:開始点。valueパラメーターの値がoriginパラメーターの値と等しい場合、スコアは1.0です。

  • value:減衰度を計算する値。

  • scale:減衰率。valueパラメーターの値がoriginパラメーターの値から減少した場合のスコアの変化率を反映します。

  • decay:valueパラメーターの値がoriginパラメーターの値からscaleパラメーターの値に減少した場合に得られるスコア。

  • offset:オフセット。距離がoffsetパラメーターの値よりも大きい場合、減衰度の計算が開始されます。valueパラメーターの値が、originパラメーターの値からoffsetパラメーターの値を引いた値よりも大きく、originパラメーターの値とoffsetパラメーターの値の合計よりも小さい場合、減衰関数は1.0を返します。

戻り値:

減衰度。有効な値:[0,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.Util;
import com.aliyun.opensearch.cava.features.Distance;

class BasicSimilarityScorer {
    Distance _distance;
    boolean init(OpsScorerInitParams params) {
        _distance = Distance.create(params, "location", "query_location");
        return true;
    }

    double score(OpsScoreParams params) {
        double distanceValue = _distance.evaluate(params);
        return Util.gaussDecay(0.0, distanceValue, 5.0, 0.000001, 0.1);
    }
}

static double gaussDecay(double origin, double value, double scale, double decay)

static double gaussDecay(double origin, double value, double scale, double decay, double offset)関数に似ています。違いは、この関数のoffsetパラメーターが0に設定されていることです。

パラメーター:

  • origin:開始点。valueパラメーターの値がoriginパラメーターの値と等しい場合、スコアは1.0です。

  • value:減衰度を計算する値。

  • scale:減衰率。valueパラメーターの値がoriginパラメーターの値から減少した場合のスコアの変化率を反映します。

  • decay:valueパラメーターの値がoriginパラメーターの値からscaleパラメーターの値に減少した場合に得られるスコア。

戻り値:

減衰度。有効な値:[0,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.Util;
import com.aliyun.opensearch.cava.features.Distance;

class BasicSimilarityScorer {
    Distance _distance;
    boolean init(OpsScorerInitParams params) {
        _distance = Distance.create(params, "location", "query_location");
        return true;
    }

    double score(OpsScoreParams params) {
        double distanceValue = _distance.evaluate(params);
        return Util.gaussDecay(0.0, distanceValue, 5.0, 0.000001);
    }
}

static double gaussDecay(double origin, double value, double scale)

static double gaussDecay(double origin, double value, double scale, double decay, double offset)関数に似ています。違いは、この関数のdecayパラメーターとoffsetパラメーターがそれぞれ0.000001と0に設定されていることです。

パラメーター:

  • origin:開始点。valueパラメーターの値がoriginパラメーターの値と等しい場合、スコアは1.0です。

  • value:減衰度を計算する値。

  • scale:減衰率。valueパラメーターの値がoriginパラメーターの値から減少した場合のスコアの変化率を反映します。

戻り値:

減衰度。有効な値:[0,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.Util;
import com.aliyun.opensearch.cava.features.Distance;

class BasicSimilarityScorer {
    Distance _distance;
    boolean init(OpsScorerInitParams params) {
        _distance = Distance.create(params, "location", "query_location");
        return true;
    }

    double score(OpsScoreParams params) {
        double distanceValue = _distance.evaluate(params);
        return Util.gaussDecay(0.0, distanceValue, 5.0);
    }
}

static double expDecay(double origin, double value, double scale, double decay, double offset)

指数関数を使用して、値と指定された開始点の間の距離に基づいて減衰度を計算します。適用可能なシナリオは、gaussDecay関数と同じです。

パラメーター:

  • origin:開始点。valueパラメーターの値がoriginパラメーターの値と等しい場合、スコアは1.0です。

  • value:減衰度を計算する値。

  • scale:減衰率。valueパラメーターの値がoriginパラメーターの値から減少した場合のスコアの変化率を反映します。

  • decay:valueパラメーターの値がoriginパラメーターの値からscaleパラメーターの値に減少した場合に得られるスコア。

  • offset:オフセット。距離がoffsetパラメーターの値よりも大きい場合、減衰度の計算が開始されます。valueパラメーターの値が、originパラメーターの値からoffsetパラメーターの値を引いた値よりも大きく、originパラメーターの値とoffsetパラメーターの値の合計よりも小さい場合、減衰関数は1.0を返します。

戻り値:

減衰度。有効な値:[0,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.Util;
import com.aliyun.opensearch.cava.features.Distance;

class BasicSimilarityScorer {
    Distance _distance;
    boolean init(OpsScorerInitParams params) {
        _distance = Distance.create(params, "location", "query_location");
        return true;
    }

    double score(OpsScoreParams params) {
        double distanceValue = _distance.evaluate(params);
        return Util.expDecay(0.0, distanceValue, 5.0, 0.000001, 0.1);
    }
}

static double expDecay(double origin, double value, double scale, double decay)

static double expDecay(double origin, double value, double scale, double decay, double offset)関数に似ています。違いは、この関数のoffsetパラメーターが0に設定されていることです。

パラメーター:

  • origin:開始点。valueパラメーターの値がoriginパラメーターの値と等しい場合、スコアは1.0です。

  • value:減衰度を計算する値。

  • scale:減衰率。valueパラメーターの値がoriginパラメーターの値から減少した場合のスコアの変化率を反映します。

  • decay:valueパラメーターの値がoriginパラメーターの値からscaleパラメーターの値に減少した場合に得られるスコア。

戻り値:

減衰度。有効な値:[0,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.Util;
import com.aliyun.opensearch.cava.features.Distance;

class BasicSimilarityScorer {
    Distance _distance;
    boolean init(OpsScorerInitParams params) {
        _distance = Distance.create(params, "location", "query_location");
        return true;
    }

    double score(OpsScoreParams params) {
        double distanceValue = _distance.evaluate(params);
        return Util.expDecay(0.0, distanceValue, 5.0, 0.000001);
    }
}

static double expDecay(double origin, double value, double scale)

static double expDecay(double origin, double value, double scale, double decay, double offset)関数に似ています。違いは、この関数のdecayパラメーターとoffsetパラメーターがそれぞれ0.000001と0に設定されていることです。

パラメーター:

  • origin:開始点。valueパラメーターの値がoriginパラメーターの値と等しい場合、スコアは1.0です。

  • value:減衰度を計算する値。

  • scale:減衰率。valueパラメーターの値がoriginパラメーターの値から減少した場合のスコアの変化率を反映します。

戻り値:

減衰度。有効な値:[0,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.Util;
import com.aliyun.opensearch.cava.features.Distance;

class BasicSimilarityScorer {
    Distance _distance;
    boolean init(OpsScorerInitParams params) {
        _distance = Distance.create(params, "location", "query_location");
        return true;
    }

    double score(OpsScoreParams params) {
        double distanceValue = _distance.evaluate(params);
        return Util.expDecay(0.0, distanceValue, 5.0);
    }
}

static double linearDecay(double origin, double value, double scale, double decay, double offset)

線形関数を使用して、値と指定された開始点の間の距離に基づいて減衰度を計算します。適用可能なシナリオは、gaussDecay関数と同じです。

パラメーター:

  • origin:開始点。valueパラメーターの値がoriginパラメーターの値と等しい場合、スコアは1.0です。

  • value:減衰度を計算する値。

  • scale:減衰率。valueパラメーターの値がoriginパラメーターの値から減少した場合のスコアの変化率を反映します。

  • decay:valueパラメーターの値がoriginパラメーターの値からscaleパラメーターの値に減少した場合に得られるスコア。

  • offset:オフセット。距離がoffsetパラメーターの値よりも大きい場合、減衰度の計算が開始されます。valueパラメーターの値が、originパラメーターの値からoffsetパラメーターの値を引いた値よりも大きく、originパラメーターの値とoffsetパラメーターの値の合計よりも小さい場合、減衰関数は1.0を返します。

戻り値:

減衰度。有効な値:[0,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.Util;
import com.aliyun.opensearch.cava.features.Distance;

class BasicSimilarityScorer {
    Distance _distance;
    boolean init(OpsScorerInitParams params) {
        _distance = Distance.create(params, "location", "query_location");
        return true;
    }

    double score(OpsScoreParams params) {
        double distanceValue = _distance.evaluate(params);
        return Util.linearDecay(0.0, distanceValue, 5.0, 0.000001, 0.1);
    }
}

static double linearDecay(double origin, double value, double scale, double decay)

static double linearDecay(double origin, double value, double scale, double decay, double offset)関数に似ています。違いは、この関数のoffsetパラメーターが0に設定されていることです。

パラメーター:

  • origin:開始点。valueパラメーターの値がoriginパラメーターの値と等しい場合、スコアは1.0です。

  • value:減衰度を計算する値。

  • scale:減衰率。valueパラメーターの値がoriginパラメーターの値から減少した場合のスコアの変化率を反映します。

  • decay:valueパラメーターの値がoriginパラメーターの値からscaleパラメーターの値に減少した場合に得られるスコア。

戻り値:

減衰度。有効な値:[0,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.Util;
import com.aliyun.opensearch.cava.features.Distance;

class BasicSimilarityScorer {
    Distance _distance;
    boolean init(OpsScorerInitParams params) {
        _distance = Distance.create(params, "location", "query_location");
        return true;
    }

    double score(OpsScoreParams params) {
        double distanceValue = _distance.evaluate(params);
        return Util.linearDecay(0.0, distanceValue, 5.0, 0.000001);
    }
}

static double linearDecay(double origin, double value, double scale)

static double linearDecay(double origin, double value, double scale, double decay, double offset)関数に似ています。違いは、この関数のdecayパラメーターとoffsetパラメーターがそれぞれ0.000001と0に設定されていることです。

パラメーター:

  • origin:開始点。valueパラメーターの値がoriginパラメーターの値と等しい場合、スコアは1.0です。

  • value:減衰度を計算する値。

  • scale:減衰率。valueパラメーターの値がoriginパラメーターの値から減少した場合のスコアの変化率を反映します。

戻り値:

減衰度。有効な値:[0,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.Util;
import com.aliyun.opensearch.cava.features.Distance;

class BasicSimilarityScorer {
    Distance _distance;
    boolean init(OpsScorerInitParams params) {
        _distance = Distance.create(params, "location", "query_location");
        return true;
    }

    double score(OpsScoreParams params) {
        double distanceValue = _distance.evaluate(params);
        return Util.linearDecay(0.0, distanceValue, 5.0);
    }
}

static double normalize(double value, double max, double min)

線形関数を使用して正規化します。次の式が使用されます:value/(max - min)。

パラメーター:

  • value:正規化する必要がある値。

  • max:valueパラメーターの最大値。

  • min:valueパラメーターの最小値。

戻り値:

正規化された結果。有効な値:[0,1]。maxパラメーターの値がminパラメーターの値よりも小さい場合、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.OpsDoc;
import com.aliyun.opensearch.cava.features.Util;

class BasicSimilarityScorer {
    boolean init(OpsScorerInitParams params) {
        return params.getDoc().requireAttribute("price");
    }

    double score(OpsScoreParams params) {
        OpsDoc doc = params.getDoc();
        long price = doc.docFieldLong("price");
        return Util.normalize(price, 0.0, 100000.0);
    }
}

static double normalize(double value, double max)

対数関数を使用して正規化します。次の式が使用されます:log10(value)/log(max)。

パラメーター:

  • value:正規化する必要がある値。

  • max:valueパラメーターの最大値。

戻り値:

正規化された結果。有効な値:[0,1]。valueパラメーターとmaxパラメーターの値が1未満の場合、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.OpsDoc;
import com.aliyun.opensearch.cava.features.Util;

class BasicSimilarityScorer {
    boolean init(OpsScorerInitParams params) {
        return params.getDoc().requireAttribute("price");
    }

    double score(OpsScoreParams params) {
        OpsDoc doc = params.getDoc();
        long price = doc.docFieldLong("price");
        return Util.normalize(price, 100000.0);
    }
}

static double normalize(double value)

逆正接関数を使用して正規化します。次の式が使用されます:atan(value/1000.0) × 2/pi。ここで、piは3.141593です。

パラメーター:

  • value:正規化する必要がある値。

戻り値:

正規化された結果。有効な値:[0,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.Util;

class BasicSimilarityScorer {
    boolean init(OpsScorerInitParams params) {
        return params.getDoc().requireAttribute("price");
    }

    double score(OpsScoreParams params) {
        OpsDoc doc = params.getDoc();
        long price = doc.docFieldLong("price");
        return Util.normalize(price);
    }
}