geohash指数如何在Lucene中发挥作用

时间:2013-03-19 19:14:57

标签: lucene geohashing

在lucene spatial 4中,我想知道geohash索引如何在幕后工作。我理解geohash的概念,它基本上需要2个点(lat,lon)并创建一个单独的“字符串”哈希。

索引只是一个“字符串”索引(r-tree或quad-tree)或沿着这些行的某些东西(例如只是索引一个姓氏).....或者它是否有特殊之处。

对于预先固定类型的搜索,哈希的所有n-gram都会被索引,例如geohash是

drgt2abc将其编入索引为d,dr,drg,drgt等。

我们可能想要编入索引的默认n-gram数量吗?

使用这种类型的索引将搜索具有10万条记录的查询,1亿条记录具有类似的空间查询查询性能。 (例如框/多边形或距离)或者我可以期望随着大量记录的添加而导致索引的一般/典型缓慢降级。

由于

1 个答案:

答案 0 :(得分:1)

最好的在线解释是我的视频:Lucene / Solr 4 Spatial deep dive

  

索引是否只是一个“字符串”索引(r-tree或quad-tree)或其他东西   沿着这些线(例如只是索引一个姓氏).....或者在那里   特别的东西。

从根本上说,Lucene只有一个用于文本,数字和现在空间的索引。你可以说这是一个字符串索引。它是一个按字节/字符串排序的列表。从更高层次来看,以这种方式使用空间是计算机科学中“尝试”AKA“PrefixTrees”的家族。

  

对于预先固定的类型搜索,请执行所有n-gram的哈希   索引,例如geohash是

     

drgt2abc将其编入索引为d,dr,drg,drgt等。

  

我们可能想要编入索引的默认n-gram数量吗?

您可以根据您的精度要求方便地告诉它,并且它将查询它需要多长时间。或者你可以详细说出来。

  

使用这种类型的索引将搜索10万个查询   记录1亿条记录具有类似的查询性能   空间查询。 (例如盒子/多边形或距离)或者我可以期待a   一般/典型的指数缓慢退化为大量记录   加入。

实际上,这种类型的索引(更具体地说是使用它的聪明的递归搜索树算法)意味着您将具有可扩展的搜索性能。 100m是一个用于匹配的过滤器的大量文档,因此它当然比仅匹配100k文档的文档要慢,但它肯定是次线性的。由于今年夏天将在新的PrefixTree编码和正在进行的空间基准测试中进行工作,明年将会更快,这将使我能够进一步优化我的计划。