我想用Lucene编写自己的搜索引擎。因为我使用空间信息,我想尝试一些更适合空间数据的索引结构。据我所知,Lucene本身没有替代结构,LGTE(地理时间日期的Lucene扩展)似乎也不允许您访问其他结构。 我没有看到其他结构,还是我必须实施它们?
答案 0 :(得分:0)
你的问题标题的直接和简单的答案,“你能使用另一种索引结构”是你不能 - 至少你不能,如果它有一个不同于Lucene的API。简而言之,它基本上是字节到DocIds +可选发布的排序映射(文档的位置偏移加上可选的“有效负载”(发布的任意字节)。
那就是说,我想你可以实现一个所谓的Lucene Codec(Lucene 4.x中的新代码),它有自己的扩展API并搜索假定你特定编解码器的字段。编解码器设想具有不同的Lucene API实现(例如,平衡内存与磁盘上的内容,何时巧妙地压缩/编码直接表示数据),但也不引入不同的API。但我想你可以。
你问题标题之外的背景是你想为空间/时间做这个,因为在我看来你不相信Lucene的索引足够合适。我非常不同意。最近Lucene空间有了很大的进步,它还有更多的进展。例如,许多非关系型数据库只允许您索引点数据,但Lucene空间可以处理任何Spatial4j形状(依赖项)和JTS(另一种依赖项),这基本上是大多数人想要的所有典型形状。还有可扩展的递归算法,用于通过Intersects,Within,Contains和Disjoint谓词匹配索引形状。我希望最迟在夏末或年末能够提升一些性能。您可能会在Solr用户列表上找到我最近发布的这篇文章: http://lucene.472066.n3.nabble.com/Multi-dimensional-spatial-search-tt4062515.html#a4062646 因此,我建议您帮助我改进Lucene空间的部分,无论您正在构建什么系统,都需要它。也许它已经符合要求。