我正在玩新的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
但它不起作用。如何在结果集中获取距离和得分字段?
答案 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:pt
,lat
和lon
)添加到geodist()
函数调用中:
&fl:_dist_:geodist(store,52.373,4.899)
请注意,在第一种情况下,如果您的查询中还有其他地理位置功能(例如geofilt
),那么pt
和sfield
也会用于此目的(除非本地覆盖) )