很多app都有查看附近的功能,如58 app里查附近的房子,如下图:
一、配置自己的经纬度字段.
如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
如下图:
三、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()");
评论: