我在网络应用程序中使用Lucene。 Lucene用于在添加文章时创建索引。 由于索引目录可能只存在一个IndexWriter实例,因此我使用 singleton IndexWriter 作为应用程序。
答案 0 :(得分:0)
何时应关闭IndexWriter以将所有文档提交到索引目录?
如果您非常担心数据丢失,请尽可能频繁地提交(甚至可以在每个文档之后执行)。如果搜索新鲜度并不重要,您仍然可以让旧阅读器闲置,并在以后重新打开它们。
如果Web服务器(tomcat)出现故障,我该如何恢复未提交的文件? Lucene是否提供了从崩溃中恢复过来的任何方法?
Lucene是原子的 - 只要退出writer.commit()
或writer.close()
,更改就会持久保存到磁盘,然后可以读取。我认为这应该足够了。
不要忘记:Lucene只是一个搜索库。您有责任确保应用程序不会崩溃。即使这样,您也有责任实施恢复策略。就原子性而言,Lucene已经做了相当不错的工作。
答案 1 :(得分:0)
您可能希望查看IndexWriter.commit而不是关闭并重新打开IndexWriter。