2012-09-29 59 views
2

我想在边界框内搜索地图框,该地图框的北纬和西南点的lat/lng可用。我有latlng索引为TrieDoubleField类型和latlng索引为solr.LatLonType类型。在一个方框内搜索(而不是像geofilt那样的半径)的原因是因为搜索是在矩形地图上可见的所有区域上完成的,我给出了地图4个角的坐标。使用Solr在边界框内进行地理空间搜索

问题:做2个范围查询效率低下,latlng一个效率低吗?如下图所示,必须搜索大量不必要的范围。

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

回答

4

Solr的4拥有一套新的空间字段类型中,你可以指定LAT-LON边框。我打算在本周末推出is information here

如果你使用的是Solr 3,那么是的,你可以像你一样进行数字范围查询。如果你想处理一个日期线交叉,那么它有点棘手,因为经度需要两对范围查询。正如你问的那样,“不”,这种方法并不低效。顺便说一句,你不需要分别为纬度&指定经度,因为LatLonType已经这样做了,你可以使用它的字段。在模式浏览器中查看,你应该看到以__x和__y结尾的字段(如果我记得)。

相关问题