如何找附近人约会联系电话或微信(2020怎么找附近的人约),本文通过数据整理汇集了如何找附近人约会联系电话或微信(2020怎么找附近的人约)相关信息,下面一起看看。

怎么找附近的人 微信附近的人约三 实践常用的全文搜索引擎,比如Solr或ES都支持位置搜索,以Solr为例,solr支持多种距离字段定义,常用的配置如下:

三 实践

常用的全文搜索引擎,比如Solr或ES都支持位置搜索,以Solr为例,solr支持多种距离字段定义,常用的配置如下:

新建些测试文档:

001成都30.67,104.07 002南京 32.07,118.78 003重庆29.57,106.56 004西安34.27,108.93

此处采用动态字段形式,定义city_s即为string类型,location_p为location类型。 查询下结果如下:

Solr支持两种查询分析器,其实差不多,分别为:geofit查询分析器和bbox查询分析器

3.1 Geofit查询分析器查询附近数据

geofit过滤器可以根据地理空间距离从给定点做一个圆形的过滤,查询5公里范围内的数据,命令如下:

fq={!geofilt sfield=location_p pt=30.67,104.05 d=1000}

sfield: 保存位置的字段名。 pt :初始位置 d: 附近距离,单位千米 结果展示:

Geofit采用两步求结果:

按照精度要求,创建一个正方形边框,正方形的边长为搜索的距离,通过这个正方形过滤文档。计算边框内的位置和中心的距离,然后进行排序,且要过滤掉以距离为圆的圆外数据。 但是如果数据量很大,那么精确的圆过滤没有必要,那就可以采用bbox查询器。3.2 bbox查询分析器查询附近数据

bbox过滤器与geofit非常相似,只要它使用要计算的圆的边界框,它采用与geofit相同的参数:

fq= {!bbox sfield=location_p pt=30.67,104.05 d=1000}

由于不做精确过滤,所以速度更快,结果我就不贴了。

3.3 距离排序

我们从刚才查询结果来看,离的近的排在前面,那么有没有办法计算这个距离的,solr中有相关函数的,且支持排序:

fl = id,city_s,distance:geodist(location_p,30.67,104.05) &sort=geodist(location_p,30.67,104.05)asc,score desc

查询就且排序

就说到这里吧。

更多如何找附近人约会联系电话或微信(2020怎么找附近的人约)相关信息请关注本站。