Lucene - 在创建新缓存时使用旧缓存

时间:2012-08-13 08:24:13

标签: c# lucene lucene.net

我使用Lucene搜索引擎来索引一些地址数据。我使用MMapDirectory来存储索引。现在我想在创建新缓存时使用旧缓存。我是否需要将旧缓存复制到另一个目录中?或者有没有什么好方法可以做到这一点?我想知道create构造函数中的IndexWriter参数是否因为这个原因而完成,但实际上并不知道如何正确使用它并且是否提供“实时搜索”。

1 个答案:

答案 0 :(得分:2)

如果您的问题是:我可以使用IndexWriter更新现有索引,而IndexSearchers会在修改之前搜索当前索引,答案是肯定的。

在IndexWriter.Commit()之前打开的IndexSearchers将看到修改之前的索引,只有在Commit之后打开的IndexSearchers会看到更改。

IndexWriter上的create参数只是告诉它创建Directory,如果它不存在,它也会覆盖指定位置的现有索引。

对于实时搜索,可以使用IndexWriter.GetIndexReader()方法创建/刷新搜索者,同时尽可能长时间地打开IndexWriter。

作为旁注,与使用Lucene.net的SimpleFSDirectory相比,MMapDirectory总是有不好的表现,我认为它甚至没有在2.9.4.1版本中实现。我不建议使用它。