在Solr 4中按距离分类结果的理想方法?

时间:2013-04-04 22:50:43

标签: solr geolocation solr4

我正在努力阅读并理解Solr 4中关于空间搜索的这篇文章:

http://wiki.apache.org/solr/SolrAdaptersForLuceneSpatial4

但是我很难找到一个简单的答案:在Solr 4中按距离对结果进行排序的理想方法是什么?

我的文档集中有两个可用的位置字段:

geolocation_rpt字段,定义为:

<fieldType name="location_rpt" class="solr.SpatialRecursivePrefixTreeFieldType"
    geo="true" distErrPct="0.025" maxDistErr="0.000009" units="degrees" />

ll是一个定位为:

的位置字段
<fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>

我在上面引用的文档中看到的示例引用了交叉圈和各种似乎没有必要的东西,如果我有兴趣做的是在我的查询中提供一个起点(lat / lng),并获得按距离排序的结果列表。

更新:接受的答案提供了一个在Solr 3和4中有效的解决方案.David Smiley的comment on that answer提供严格的“Solr 4”排序方式,对于那些感兴趣的人

1 个答案:

答案 0 :(得分:5)

根据第4章 - 查询Solr - 按 Apache Solr 4 Cookbook 中某点的距离对结果进行排序,以便按{{1}的距离排序您已在模式中定义的字段,您将使用geodist()函数,如下所示:

假设您站在北极(0.0,0.0),并且您希望让公司按照这样的方式进行排序,使得距您较近的公司在结果列表中排在第一位。您的查询如下所示:

ll