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

and*_*xus 5 search solr distance geospatial

我正在玩新的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 
Run Code Online (Sandbox Code Playgroud)

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

Pai*_*ook 7

根据参考空间搜索 - 返回距离,您可以编辑字段参数以执行以下操作之一:

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

  • 它返回以下错误:`解析fieldname时出错:geodist - 参数不够:[]` (3认同)

小智 5

佩奇给出的答案是正确的。但是,错误的显示取决于给出的查询。

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

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

将这两个添加到 URL 中

&pt=52.373,4.899&sfield=store&fl=_dist_:geodist()
Run Code Online (Sandbox Code Playgroud)

或者将这两个(或者实际上是 3:和pt)添加到函数调用中:latlongeodist()

&fl:_dist_:geodist(store,52.373,4.899)
Run Code Online (Sandbox Code Playgroud)

请注意,在第一种情况下,如果您geofilt的查询中有其他地理函数(例如 ),则ptsfield也用于此目的(除非本地覆盖)