全部产品
云市场

distance

更新时间:2017-06-07 13:26:11

兼容特征及功能函数项

兼有功能及特征函数的功能,可以同时在filter、sort及formula表达式中使用。其中函数参数出现的文档字段需根据对应函数文档提示,创建为索引或属性.

distance : 获取两个点之间的球面距离。一般用于LBS的距离计算。

  1. 详细用法
    distance(longitude_a, latitude_a, longtitude_b, latitude_b, output_name)

  2. 参数
    longitude_a:点A的经度值。支持的参数类型为浮点型的字段名
    latitude_a:点A的纬度值。支持的参数类型为浮点型的字段名
    longtitude_b:点B的经度值。支持的参数类型为浮点型的字段名;或者为用户查询串中kvpairs子句中设置的一个字段名(其值需要为浮点数)
    latitude_b:点B的纬度值。支持的参数类型为浮点型的字段名;或者为用户查询串中kvpairs子句中设置的一个字段名(其值需要为浮点数)
    outputname:如果需要在结果中返回距离值,可以通过制定outputname值得到,如果不需要,可以不指定。

  3. 返回值
    float。实际距离值,单位为千米。

  4. 适用场景
    场景1:查找距离用户(120.34256,30.56982)10公里内的外婆家(lon,lat为文档中记录商家的经纬度值,需要配置为属性字段),并按照距离由近及远排序;
    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参数可以设置)才能得到。