从Lucene索引中删除旧文档的惯用方法是什么?
我在所有文档上都有一个日期字段(YYYYMMddhhmmss),我想删除超过一天的任何内容(例如)。
我应该通过IndexReader的文档执行过滤搜索还是枚举?
无论Lucene运行在哪个平台上,我都确定问题是一样的。
谢谢!
答案 0 :(得分:3)
搜索YYYYMMdd *应该可以正常工作,因为当前日期存储为文本字符串。获得结果后,您可以使用IndexReader.delete删除您不感兴趣的文档。在我看来,这是实现此目标的最佳方式。
答案 1 :(得分:2)
您可以尝试使用Lucene的低级API。
从索引中获取术语“YYYY”的Term Enumerator。迭代术语枚举器以获得术语。如果术语的文本不是当前日期(或上一个日期),请使用该术语调用IndexReader.deleteDocuments(term)。
由于您没有使用Query对象,因此不会获得与搜索相关的异常。