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