3

我正在努力阅读和理解 Solr 4 中有关空间搜索的文档:

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

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

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

geo是一个location_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"/>

我在上面引用的文档中看到的示例引用了相交的圆圈和各种似乎没有必要的事情,如果我感兴趣的只是在我的查询中提供一个起点(纬度/经度),并获得一个按距离排序的结果列表。

更新:接受的答案提供了一个很好的解决方案,适用于 Solr 3 和 4。David Smiley对该答案的评论为感兴趣的人提供了严格的“Solr 4”排序方式。

4

1 回答 1

5

根据第 4 章 - Query Solr - Sorting Results by a distance from a point in the Apache Solr 4 Cookbook为了根据 ll您在架构中定义的字段按距离排序,您将使用geodist()函数,如下所示:

假设您站在北极 (0.0, 0.0),并且您希望对公司进行排序,使离您最近的公司在结果列表中排在第一位。您的查询将如下所示:

  http://localhost:8983/solr/select?q=company&sort=geodist(ll,0.0,0.0)+asc
于 2013-04-05T02:37:58.453 回答