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

6

我正在尝试使用新的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个回答

8
根据参考Spatial Search - Returning the distance,您可以编辑字段参数执行以下操作之一:
  • &fl=*,score,geodist()
  • &fl=*,score,_dist_:geodist() - 这个将会在别名_dist_中返回距离。

4
返回以下错误:解析字段名错误:geodist - 参数不足:[] - andrexus
这里是 geodist() 函数的参考文档:http://wiki.apache.org/solr/SpatialSearch#geodist_-_The_distance_function - Paige Cook
A ValueSource isn't directly available from this field. Instead try a query using the distance as the score. - andrexus
该问题特别涉及到 “Solr 4” ,并且所给出的答案链接指向一个文档,其中开头就说,“Lucene 4 拥有一个新的空间模块来替代下面所描述的旧模块... 这篇文章的剩余部分仍然是关于旧方法的。”所以这真的是一个理想的答案吗?它似乎可能基于即将在 Solr4 及以后版本中被淘汰的旧方法。 - Mason G. Zhwiti
1
@andrexus,你的第二个错误可能意味着你没有将“location”字段类型传递给geodist。你可能正在传递Solr 4 location_rpt字段,在这里似乎不起作用。 - Mason G. Zhwiti
显示剩余2条评论

5

Paige的答案是正确的。然而,错误信息会根据查询不同而显示不同。

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

geodist需要sfield(包含文档位置信息的字段)和pt(圆心点)。如果找不到这两个参数中的任何一个,就会抛出上述错误信息。

请将这两个参数添加到URL中:

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

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

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

请注意,在第一种情况下,如果您的查询中有其他地理功能(如geofilt),则ptsfield也将用于该功能(除非本地覆盖)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接