【发布时间】:2010-12-07 12:14:36
【问题描述】:
从 Lucene 索引中删除旧文档的惯用方法是什么?
我在所有文档上都有一个日期字段 (YYYYMMddhhmmss),我想删除超过一天的任何内容(例如)。
我应该执行过滤搜索还是枚举 IndexReader 的文档?
我确信无论 Lucene 在哪个平台上运行,问题都是一样的。
谢谢!
【问题讨论】:
标签: .net indexing lucene lucene.net
从 Lucene 索引中删除旧文档的惯用方法是什么?
我在所有文档上都有一个日期字段 (YYYYMMddhhmmss),我想删除超过一天的任何内容(例如)。
我应该执行过滤搜索还是枚举 IndexReader 的文档?
我确信无论 Lucene 在哪个平台上运行,问题都是一样的。
谢谢!
【问题讨论】:
标签: .net indexing lucene lucene.net
搜索 YYYYMMdd* 应该可以工作,因为当前日期存储为文本字符串。获得结果后,您可以使用 IndexReader.delete 删除您不感兴趣的文档。在我看来,这似乎是实现这一目标的最佳方式。
【讨论】:
您可以尝试使用 Lucene 的低级 API。
从索引中获取术语“YYYY”的术语枚举器。迭代术语枚举器以获取术语。如果术语的文本不包含当前日期(或以前的日期),请使用该术语调用 IndexReader.deleteDocuments(term)。
由于你没有使用 Query 对象,你不会得到搜索相关的异常。
【讨论】: