使用Solr在边界框内进行地理空间搜索

时间:2012-09-29 13:35:03

标签: solr lucene gis geospatial

我想搜索一个边界框内的地图,该边界框的北/东点和西南点的纬度/经度可用。我将latlng编入TrieDoubleField类型,将latlng编入solr.LatLonType类型。在一个方框内搜索的原因(而不是像geofilt中那样的半径)是因为搜索是在矩形地图上可见的所有区域上进行的,并且我得到了地图的4个角的坐标。

问题:进行2个范围查询是否效率低,一个用于lat,一个用于lng?如下图所示,必须搜索许多不必要的范围。

http://127.0.0.1:8080/solr/select?q=*:*fl=id&fq=lat:[42.2823890429 TO 42.4224427748] AND lng:[-71.3345718384 TO -70.7612228394]

如果是这样,有更好的方法吗?

fq={!bbox}&sfield=latlng&pt=45.15,-93.85& d=5 无效,因为我无法计算d的值以匹配我的地图边界。

enter image description here

1 个答案:

答案 0 :(得分:4)

Solr 4有一组新的空间字段类型,您可以在其中指定lat-lon边界框。我打算在本周末更新is information here

如果您使用的是Solr 3,那么您可以像往常一样进行数值范围查询。如果你想处理一个日期线交叉,那么它有点棘手,因为经度需要两对范围查询。并且“不”,正如你所问,这种方法效率不高。顺便说一句,你不需要索引纬度和&由于LatLonType已经执行此操作,因此您可以使用其字段。在架构浏览器中查看,您应该看到以__x和__y结尾的字段(如果我记得的话)。