全部產品
Search
文件中心

:distance

更新時間:Jul 13, 2024

相容特徵及功能函數項

兼有功能及特徵函數的功能,可以同時在filter、sort及formula運算式中使用。

其中函數參數出現的文檔欄位需根據對應函數文檔提示,建立為索引或屬性.

distance:擷取兩個點之間的球面距離,一般用於LBS的距離計算。

  1. 1.詳細用法:

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

  3. 2.參數:

    • longitude_a:點A的經度值。支援的參數類型為浮點型的欄位名

    • latitude_a:點A的緯度值。支援的參數類型為浮點型的欄位名

    • longtitude_b:點B的經度值。支援的參數類型為浮點型的欄位名;或者為使用者查詢串中kvpairs子句中設定的一個欄位名(其值需要為浮點數)

    • latitude_b:點B的緯度值。支援的參數類型為浮點型的欄位名;或者為使用者查詢串中kvpairs子句中設定的一個欄位名(其值需要為浮點數)

    • outputname:如果需要在結果中返回距離值,可以通過制定outputname值得到,如果不需要,可以不指定。

  4. 3.傳回值float。

  5. 實際距離值,單位為千米。

  6. 4.適用情境

  7. 情境1:尋找距離使用者(120.34256,30.56982)10公裡內的外婆家(lon,lat為文檔中記錄商家的經緯度值,需要配置為屬性欄位),並按照距離由近及遠排序;

  8. #sort子句中的寫法
    query=default:’外婆家’&&
    filter=distance(lon,lat,”120.34256”,”30.56982”)<10&&
    sort=+distance(lon,lat,"120.34256","30.56982")
    
    #業務排序寫法
    其中距離排序也可以採用如下方式實現,使用者座標通過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參數僅限於精排運算式中使用,filter及sort子句不支援。設定outputname參數後,實際的距離值將展示到variableValue節點中,該節點只能在返回格式為xml或者fulljson中(config子句中format參數可以設定)才能得到。