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

:距離

最終更新日:Dec 28, 2024

機能関数と特徴関数の両方で使用できる関数

特定の関数は、機能関数と特徴関数の両方で使用できます。このような関数は、フィルター句、ソート句、およびソート式で使用できます。

このような関数の引数で参照するフィールドは、各関数の説明に基づいてインデックスフィールドまたは属性フィールドとして構成する必要があります。

distance: 2 つの地点間の球面距離を返します。これは、位置情報サービスでよく使用されます。

    1. 構文

    distance(longitude_a, latitude_a, longtitude_b, latitude_b, output_name)

    2. パラメーター

    • longitude_a: 地点 a の経度値。このパラメーターの値には、FLOAT 型のフィールドの名前を指定できます。

    • latitude_a: 地点 a の緯度値。このパラメーターの値には、FLOAT 型のフィールドの名前を指定できます。

    • longtitude_b: 地点 b の経度値。このパラメーターの値には、FLOAT 型のフィールドの名前、またはクエリ文字列の kvpairs 句 で指定されたフィールドを指定できます。

    • latitude_b: 地点 b の緯度値。このパラメーターの値には、FLOAT 型のフィールドの名前、またはクエリ文字列の kvpairs 句 で指定されたフィールドを指定できます。

    • outputname: 戻り値。このパラメーターは省略可能です。このパラメーターを指定すると、検索結果で計算された距離を取得できます。

    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 句で形式を指定できます。