如何从Lucene / Lucene.NET中删除旧文档

时间:2009-10-16 20:49:19

标签: .net indexing lucene lucene.net

从Lucene索引中删除旧文档的惯用方法是什么?

我在所有文档上都有一个日期字段(YYYYMMddhhmmss),我想删除超过一天的任何内容(例如)。

我应该通过IndexReader的文档执行过滤搜索还是枚举?

无论Lucene运行在哪个平台上,我都确定问题是一样的。

谢谢!

2 个答案:

答案 0 :(得分:3)

搜索YYYYMMdd *应该可以正常工作,因为当前日期存储为文本字符串。获得结果后,您可以使用IndexReader.delete删除您不感兴趣的文档。在我看来,这是实现此目标的最佳方式。

答案 1 :(得分:2)

您可以尝试使用Lucene的低级API。

从索引中获取术语“YYYY”的Term Enumerator。迭代术语枚举器以获得术语。如果术语的文本不是当前日期(或上一个日期),请使用该术语调用IndexReader.deleteDocuments(term)。

由于您没有使用Query对象,因此不会获得与搜索相关的异常。