读书人

基于Solr的地理位置搜寻(3)

发布时间: 2013-01-20 10:22:40 作者: rapoo

基于Solr的地理位置搜索(3)

接上文,本文将继续介绍基于Solr的地理位置搜索的第二种实现方案Cartesian Tiers+GeoHash

从基于Solr的地理位置搜索(2)中可以看到完全基于GeoHash的查询过滤,将完全遍历整个docment文档,从效率上来看并不太合适,所以结合笛卡尔层后,能有效缩减少过滤范围,从性能上能很大程度的提高。

?

构建索引阶段:

?

??? 看到这里大家肯定明白了。越相近的经纬度在同层肯定会在同一个网格中,所以他们存储的tierBoxId就会是一样。那么查询的时候通过经纬度对应层的tierBoxId,也就能找到相同层域的docId,但是如果给定的的查询范围大,可能需要将若干层的所属网格的docId都查到。

?

?整个查询过程是先通过笛卡尔层将若干个网格涉及的DocList存入bitSet,如下代码所示:


?

读书人网 >互联网

热点推荐