2

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

问题:lat执行 2 个范围查询,一个 for和一个 for会不会效率低下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匹配地图边界的值。

在此处输入图像描述

4

1 回答 1

4

Solr 4 具有一组新的空间字段类型,您可以在其中指定经纬度边界框。这里有一些我打算在本周末更新的信息。

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

于 2012-09-29T18:26:48.237 回答