我使用 Lucene 搜索引擎来索引一些地址数据。我MMapDirectory
用来存储索引。现在我想在创建新缓存时使用我的旧缓存。我需要将旧缓存复制到另一个目录吗?或者也许有什么好的方法可以做到这一点?我想知道构造create
函数中的参数IndexWriter
是否出于这个原因完成,但实际上不知道如何正确使用它以及它是否提供“实时搜索”。
问问题
309 次
1 回答
2
如果您的问题是:我可以在 IndexSearchers 搜索当前索引时使用 IndexWriter 更新我现有的索引,在修改之前,答案是肯定的。
在 IndexWriter.Commit() 之前打开的 IndexSearchers 将看到修改之前的索引,只有在 Commit 之后打开的 IndexSearchers 才能看到更改。
IndexWriter 上的 create 参数只是告诉它创建目录,如果它不存在,它还将覆盖指定位置的现有索引。
对于实时搜索,这是通过使用 IndexWriter.GetIndexReader() 方法来创建/刷新您的搜索器,同时尽可能长时间地保持 IndexWriter 打开。
附带说明一下,与使用 Lucene.net 的 SimpleFSDirectory 相比,MMapDirectory 的性能一直很差,我认为它甚至没有在 2.9.4.1 版本中实现。我不建议使用它。
于 2012-08-14T20:54:18.337 回答