【问题标题】:Geospatial search within a bounding box using Solr使用 Solr 在边界框内进行地理空间搜索
【发布时间】:2012-09-29 13:35:03
【问题描述】:

我想在边界框内搜索地图,该地图的东北点和西南点的 lat/lng 可用。我将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 的值以匹配我的地图边界。

【问题讨论】:

    标签: solr lucene gis geospatial


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-06-29
      • 1970-01-01
      • 2017-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-19
      • 1970-01-01
      相关资源
      最近更新 更多