機能関数
ソート式で機能関数を使用できます。ほとんどの機能関数は、精密ソート式でのみ使用できます。さまざまな構文と句を組み合わせて、複雑なソートを実行できます。
機能関数のパラメーターで参照するフィールドは、各関数の説明に基づいてインデックスフィールドまたは属性フィールドとして構成する必要があります。
gauss_decay: 値と指定された開始点の間の距離に基づいて、ガウス関数を使用して減衰度を計算します
1.構文:
gauss_decay(origin, value, scale, decay, offset)
2.パラメーター:
origin: 開始点。このパラメーターの値は倍精度浮動小数点数である必要があります。
value: 減衰度を計算するユーザー定義フィールドまたは式。このパラメーターの値は倍精度浮動小数点数である必要があります。
scale: 減衰度の計算に使用されるスケール。このパラメーターの値は倍精度浮動小数点数である必要があります。
decay: 距離がscaleパラメーターの値と等しい場合の減衰度。このパラメーターはオプションです。このパラメーターの値は倍精度浮動小数点数である必要があります。デフォルト値: 0.000001。
offset: 距離がオフセットより大きい場合に減衰度の計算が開始されます。このパラメーターはオプションです。このパラメーターの値は倍精度浮動小数点数である必要があります。デフォルト値: 0。
3.戻り値:
戻り値の型はDOUBLEです。有効な値: [0,1] 。
4.シナリオ:
シナリオ 1:
最寄りのホテルを検索したいとします。近くのホテルは近い順にソートされ、100メートル未満のホテルはソートされません。longitude_in_docとlatitude_in_docはホテルの経度と緯度を指定します。longitude_in_queryとlatitude_in_queryはあなたの場所の経度と緯度を指定します。
gauss_decay(0, distance(longitude_in_doc, latitude_in_doc, longitude_in_query, latitude_in_query), 5, 0.000001, 0.1)
シナリオ 2:
約2,000円の携帯電話を検索したいとします。携帯電話の価格が1,500円未満または2,500円を超える場合、携帯電話を含むドキュメントのスコアはゼロになります。携帯電話の価格は、ドキュメントのpriceフィールドで示されます。開始価格はkvpairs=price_key:2000形式で定義されます。次の式が使用されます。
gauss_decay(kvpairs_value(price_key, FLOAT), price, 500)
5.使用上の注意:
この関数のパラメーターで参照するフィールドは、属性フィールドとして構成する必要があります。
scaleパラメーターの値が0以下の場合、gauss_decay関数はデフォルトで0を返します。
decayパラメーターの値が1以上の場合、gauss_decay関数はデフォルトで1を返します。
decayパラメーターの値が0以下の場合、decayパラメーターはデフォルトで0.000001に設定されます。
offsetパラメーターの値が0未満の場合、offsetパラメーターはデフォルトで0に設定されます。