gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 12:34:12 25 4
gpt4 key购买 nike

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

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

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

那么,如果我想再次“激活”此文档..我该怎么做呢?

谢谢!

最佳答案

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

Lucene的删除是软删除。这意味着,当文档被删除时,它们会被标记为删除。只有在优化索引时,删除的文档才会从索引中清除。文档列表保存在索引目录中的 .del 文件中。 undeleteAll() 方法清除文件的内容以使这些文件再次激活。 (不要尝试手动删除此文件,因为索引段文件中保留了对该文件的引用。)

您不能取消删除文档的子集。您必须取消删除所有文档。您可以通过获取所有已删除文档的列表来模拟所需的功能,调用 undeleteAll(),然后再次删除您希望保留的文档以外的文档。

关于c# - 是否可以取消删除 Lucene.net 索引中的文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7692111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com