在solr里怎么实现这个功能呢?我们先给下官方文档:
http://wiki.apache.org/solr/SpatialSearch
和
https://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