如何在Solr 4地理空间搜索中获得距离?

时间:2013-01-18 15:43:17

标签: search solr geospatial distance

我正在玩新的Solr 4地理空间搜索。就像http://wiki.apache.org/solr/SolrAdaptersForLuceneSpatial4中的一个例子一样,我试图得到如此结果:

http://localhost:8983/solr/allopenhours/select?  
&q=foobar  
&fq=geo:%22Intersects(Circle(54.729696,-98.525391%20d=0.08992))%22  
&q={!%20score=distance}  
&fl=*,score 

但它不起作用。如何在结果集中获取距离和得分字段?

2 个答案:

答案 0 :(得分:7)

根据参考Spatial Search - Returning the distance,您可以编辑您的字段参数以执行以下操作之一:

  • &fl=*,score,geodist()
  • &fl=*,score,_dist_:geodist() - 此人将返回别名_dist_
  • 中的距离

答案 1 :(得分:4)

Paige给出的答案是正确的。但是,根据给出的查询显示错误。

Error parsing fieldname: geodist - not enough parameters:[]

geodist需要sfield(保存文档中位置的字段)和pt(圆圈的中心点)。如果它找不到任何这些,它将抛出显示的错误。

将这两者添加到网址

&pt=52.373,4.899&sfield=store&fl=_dist_:geodist()

或者将两个(或实际3:ptlatlon)添加到geodist()函数调用中:

&fl:_dist_:geodist(store,52.373,4.899)

请注意,在第一种情况下,如果您的查询中还有其他地理位置功能(例如geofilt),那么ptsfield也会用于此目的(除非本地覆盖) )