2010-05-19 70 views
1

什么是分割现有的Lucene索引分为两半,即每个分割应该包含一半的文档总数的原指数分裂Lucene索引分为两半

+0

只是为了清楚起见:您想分割索引*而不重新索引文档,对吧? – 2010-05-19 13:48:08

+0

是的,你是对的!我不想重新阅读索引,并再次使用IndexWriter来构建两个索引。相反,这样做的一些自动方式寻求 – Akhil 2010-05-19 13:57:08

+0

你能提供一些这方面的商业理由吗?最简单的方法是读取并循环访问IndexReader类。 – Mikos 2010-05-20 03:45:28

回答

3

拆分现有的索引(不重建索引的所有文件)最简单的方法是:

  1. 制作现有指数的另一个副本(即CP -r myindex mycopy)
  2. 打开的第一个索引和删除一半的文档(范围为0〜maxDoc/2)
  3. 打开第二索引,并删除其他半(范围maxDoc/2到maxDoc)
  4. 优化两个指数

这可能不是最有效的方法,但它只需很少的编码就可以完成。

1

一个相当稳健的机制就是用最好的方式以文件的校验和为模数,索引的数量来决定它将进入哪个索引。

1

最近的Lucene版本有一个专门的工具来执行此操作(在contrib/misc下有IndexSplitterMultiPassIndexSplitter)。