关于 Lucene 索引合并解决方法
博客分类:
JAVA 技术
luceneApache 中间件 WebF#
由于 Clustor 的问题造成无法对索引进行同步,脑子中马上浮现用 rmi(双机),UDP 广播(多
机)作通信中间件对 clustor 进行索引同步但这样经过测试后效率相对较低,故另辟蹊径,最终
用索引合并的方式进行快速的索引整合,达到时间短索引同步快的目的。代码如下:
Java 代码
1. packagecom.pccw;
2.
3. importjava.io.File;
4.
5. importorg.apache.lucene.analysis.standard.StandardAnalyzer;
6. importorg.apache.lucene.index.IndexWriter;
7. importorg.apache.lucene.store.FSDirectory;
8.
9. publicclassAdvancedTextFileIndexer{
10. /**
11. *@authorShaneZhaoaboutmergeIndexinPCCWBJDEV
12. *将小索引文件合并到大的索引文件中去
13. *
14. *@paramfrom
15. *将要合并到 to 文件的文件
16. *@paramto
17. *将 from 文件合并到该文件
18. *@paramsa
19. */
20. privatestaticvoidmergeIndex(Filefrom,Fileto,StandardAnalyzer
sa){
21. IndexWriterindexWriter=null;
22. try{
23. System.out.println("正在合并索引文件! ");
24. indexWriter=newIndexWriter(to,sa,false);
25. indexWriter.setMergeFactor(100000);
26. indexWriter.setMaxFieldLength(Integer.MAX_VALUE);
27. indexWriter.setMaxBufferedDocs(Integer.MAX_VALUE);
28. indexWriter.setMaxMergeDocs(Integer.MAX_VALUE);
29. FSDirectory[]fs={FSDirectory.getDirectory(from,false)
};
30. indexWriter.addIndexes(fs);
31. indexWriter.optimize();
32. indexWriter.close();