solr怎么查询距离

很多app都有查看附近的功能,如58 app里查附近的房子,如下图:

在solr里怎么实现这个功能呢?我们先给下官方文档: http://wiki.apache.org/solr/SpatialSearchhttps://cwiki.apache.org/confluence/display/solr/Spatial+Search。为下次不再去翻译这些英文,在此记录下基本使用方法.

一、配置自己的经纬度字段.

如productLoc:39.969615,116.444982 前面是纬度,后面是经度。
给这个字段在schemal.xml里配置类型为location,而这个类型的配置如下:
<fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>
     <dynamicField name="*_coordinate"  type="tdouble" indexed="true"  stored="false"/>

注意productLoc要配成单值的,如下:
<field name="productLoc" type="location" indexed="true" stored="true"  multiValued="false" />

二、solr查询命令

http://ip:port/solr/${core}/select?q=*:*&fq={!geofilt}&sort=geodist() asc&fl=id,productLoc,dist:geodist()&d=5&sfield=productLoc&pt=39.969615,116.444982
如下图:
solr_dist

三、solrj里怎么设置参数:

SolrQuery query = new SolrQuery();
query.addFilterQuery("{!geofilt}");
query.set("d", 2);
query.set("sfield", "productLoc");
query.set("pt", params.getLatitude() + "," + params.getLongitude());
query.set("sort", "geodist() asc");
query.set("fl", "dist:geodist()");
相关阅读
评论:
点击刷新

↓ 广告开始-头部带绿为生活 ↓
↑ 广告结束-尾部支持多点击 ↑