2010-05-19 98 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)。