我需要从Lucene索引中删除文档,然后才能重新添加它们.似乎如果我将文档标记为已删除,然后再尝试添加它…文档仍然被删除.如何“取消删除”文件?
这就是我将文档标记为“已删除”的方式:
Term = new Tearm("id", Id.Value);
IndexSearcher.reader.DeleteDocuments(term);
IndexSearcher.reader.Close();
所以如果我想再次“激活”这个文件……我该怎么做?
谢谢!
最佳答案 我不熟悉Lucene.Net,但Java版本有IndexReader.undeleteAll()方法.
Lucene的删除是软删除.这意味着,删除文档时,会将其标记为删除.仅在优化索引时,才会从索引中清除已删除的文档.文档列表保存在索引目录的.del文件中. undeleteAll()方法清除文件的内容以使这些文档再次处于活动状态. (不要尝试手动删除此文件,因为此文件的引用保留在索引段文件中.)
您无法取消删除文档的子集.你必须取消删除所有文件.您可以通过获取所有已删除文档的列表来模拟所需的功能,调用undeleteAll(),然后再次删除除了您要保留的文档之外的文档.