微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 是否可以取消删除Lucene.net索引中的文档?

我需要从Lucene索引中删除文档,然后才能重新添加它们.似乎如果我将文档标记为已删除,然后再尝试添加它…文档仍然被删除.如何“取消删除文件

这就是我将文档标记为“已删除”的方式:

Term = new Tearm("id",Id.Value);
    IndexSearcher.reader.DeleteDocuments(term);
    IndexSearcher.reader.Close();

所以如果我想再次“激活”这个文件……我该怎么做?

谢谢!

解决方法

我不熟悉Lucene.Net,但Java版本有IndexReader.undeleteall()方法.

Lucene的删除是软删除.这意味着,删除文档时,会将其标记删除.仅在优化索引时,才会从索引中清除已删除的文档.文档列表保存在索引目录的.del文件中. undeleteall()方法清除文件内容以使这些文档再次处于活动状态. (不要尝试手动删除文件,因为此文件的引用保留在索引段文件中.)

您无法取消删除文档的子集.你必须取消删除所有文件.您可以通过获取所有已删除文档的列表来模拟所需的功能,调用undeleteall(),然后再次删除除了您要保留的文档之外的文档.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐