在使用Lucene的webapp中,何时关闭单个IndexWriter?

时间:2012-11-20 14:00:27

标签: web-applications lucene singleton

我在网络应用程序中使用Lucene。 Lucene用于在添加文章时创建索引。 由于索引目录可能只存在一个IndexWriter实例,因此我使用 singleton IndexWriter 作为应用程序。

  1. 何时应关闭IndexWriter以将所有文档提交到索引目录?
  2. 如果Web服务器(tomcat)出现故障,我该如何恢复未提交的文件? Lucene是否提供了从崩溃中恢复过来的任何方法?

2 个答案:

答案 0 :(得分:0)

  

何时应关闭IndexWriter以将所有文档提交到索引目录?

如果您非常担心数据丢失,请尽可能频繁地提交(甚至可以在每个文档之后执行)。如果搜索新鲜度并不重要,您仍然可以让旧阅读器闲置,并在以后重新打开它们。

  

如果Web服务器(tomcat)出现故障,我该如何恢复未提交的文件?   Lucene是否提供了从崩溃中恢复过来的任何方法?

Lucene是原子的 - 只要退出writer.commit()writer.close(),更改就会持久保存到磁盘,然后可以读取。我认为这应该足够了。

不要忘记:Lucene只是一个搜索库。您有责任确保应用程序不会崩溃。即使这样,您也有责任实施恢复策略。就原子性而言,Lucene已经做了相当不错的工作。

答案 1 :(得分:0)

您可能希望查看IndexWriter.commit而不是关闭并重新打开IndexWriter。