问题描述
我可以使用 Lucene.net 进行字符串索引和搜索,但是, 我想在两个日期之间搜索文档。 你能分享两个日期之间搜索的任何代码示例吗? 我在 stackoverflow 中找到了一个示例,但它太旧了(9 年前)并且无法与我的 Lucene.net 版本一起运行。 谢谢,
解决方法
Lucene.NET 没有日期或日期范围查询的字段类型。因此,通常有两种存储方式可供选择,索引和搜索日期。
- 您可以将它们作为字符串处理,例如使用年月日格式,即 2021 年 7 月 11 日的 210711 或 20210711;或
- 您可以通过存储代表日期的刻度或毫秒来处理它们。
然后,根据您选择的方式,您可以使用 TermRangeQuery
或 NumericRangeQuery
进行搜索。两种方法都可以只处理日期或日期和时间。
还值得知道的是,Lucene.NET 包含一个 DataTools 静态类,该类具有用于将 DateTime 转换为字符串并以不同级别的分辨率返回的实用方法,即
"yyyy";
"yyyyMM";
"yyyyMMdd";
"yyyyMMddHH";
"yyyyMMddHHmm";
"yyyyMMddHHmmss";
"yyyyMMddHHmmssfff";
希望这足以让您继续前进。