0

我在 java 程序的帮助下合并 lucene 索引。索引的合并做得很好,但我也想显示合并索引的等待时间。那么有没有什么方法
可以计算合并索引所需的时间或建议任何替代实际上我想显示进度条,它将显示合并索引所需的大致时间。为了合并索引,我使用以下代码。

 try{
 File INDEX_DIR= new File("D:\\merge lucene\\abc\\");
 INDEX_DIR.mkdir();
 File indexDir = new File("D:\\merge lucene\\abc\\");
 Directory indexes[] = new Directory[indexDir.list().length];
 IndexWriter writer = new IndexWriter(
 FSDirectory.open(INDEX_DIR),
 new SimpleAnalyzer(),true,
 IndexWriter.MaxFieldLength.LIMITED); 
 indexes[0] = FSDirectory.open(indexDir);
 writer.addIndexes(indexes[0]); 
 File indexDir1 = new File("D:\\merge lucene\\def\\");
 Directory indexes1[] = new Directory[indexDir1.list().length];
 indexes1[0] = FSDirectory.open(indexDir1);
 writer.addIndexes(indexes1[0]);
 writer.optimize();
 writer.close();   
 System.out.println("index merged");


} 


    catch(Exception ex){System.out.println("exception here"+ex);}

}                                        
4

1 回答 1

0

不幸的是,据我所知,不存在任何可能为您提供合并所需时间的 API。您可以尝试在 lucene 用户邮件列表中提出同样的问题。

java-user@lucene.apache.org

但是,提供的代码片段不正确您没有正确关闭所有资源。所有打开的目录都应该关闭。您还应该关闭分析仪。不关闭资源会对索引结果产生影响。此外,如果应该发生任何索引删除,不关闭资源也会导致索引删除失败。

它是在 finally 块中关闭资源的更好方法,这样即使发生异常,您也可以确保所有资源都已正确关闭。

于 2013-09-12T12:45:24.670 回答