機能関数と特徴関数の両方で使用できる関数
特定の関数は、機能関数と特徴関数の両方で使用できます。このような関数は、フィルター句、ソート句、およびソート式で使用できます。
このような関数の引数で参照するフィールドは、各関数の説明に基づいてインデックスフィールドまたは属性フィールドとして構成する必要があります。
distance: 2 つの地点間の球面距離を返します。これは、位置情報サービスでよく使用されます。
longitude_a: 地点 a の経度値。このパラメーターの値には、FLOAT 型のフィールドの名前を指定できます。
latitude_a: 地点 a の緯度値。このパラメーターの値には、FLOAT 型のフィールドの名前を指定できます。
longtitude_b: 地点 b の経度値。このパラメーターの値には、FLOAT 型のフィールドの名前、またはクエリ文字列の kvpairs 句 で指定されたフィールドを指定できます。
latitude_b: 地点 b の緯度値。このパラメーターの値には、FLOAT 型のフィールドの名前、またはクエリ文字列の kvpairs 句 で指定されたフィールドを指定できます。
outputname: 戻り値。このパラメーターは省略可能です。このパラメーターを指定すると、検索結果で計算された距離を取得できます。
1. 構文
distance(longitude_a, latitude_a, longtitude_b, latitude_b, output_name)
2. パラメーター
3. 戻り値
地点 a と地点 b の間の距離。単位:キロメートル。戻り値の型は FLOAT です。
4. 使用例
使用例 1: ユーザーの座標から 10 km 以内にある KFC を検索します。この例では、経度と緯度は 120.34256 と 30.56982 です。KFC の経度と緯度を指定する lon フィールドと lat フィールドは、属性フィールドとして構成する必要があります。検索結果は、近い順にソートされます。
# ソート句で distance 関数を使用します。
query=default:'KFC'&&
filter=distance(lon,lat,"120.34256","30.56982")<10&&
sort=+distance(lon,lat,"120.34256","30.56982")
# ファインソート式で distance 関数を使用します。
または、kvpairs 句を使用してユーザーの座標を渡し、次のファインソート式を使用して検索結果を距離でソートすることもできます。
kvpairs=longtitude_in_query:120.34256, latitude_in_query:30.56982
distance(longitude_in_doc, latitude_in_doc, longtitude_in_query, latitude_in_query, distance_value)
5. 使用上の注意
関数の引数で参照するフィールドは、属性フィールドとして構成する必要があります。
outputname パラメーターは、ファインソート式でのみ使用できます。このパラメーターは、フィルター句またはソート句では使用できません。 outputname パラメーターを指定すると、実際の距離値は variableValue ノードに返されます。 variableValue ノードは、レスポンス形式が XML または完全な JSON に設定されている場合にのみ返されます。 format パラメーターを設定することで、config 句で形式を指定できます。