Lucene.net 在两个日期之间查询?

问题描述

我可以使用 Lucene.net 进行字符串索引搜索,但是, 我想在两个日期之间搜索文档。 你能分享两个日期之间搜索的任何代码示例吗? 我在 stackoverflow 中找到了一个示例,但它太旧了(9 年前)并且无法与我的 Lucene.net 版本一起运行。 谢谢,

解决方法

Lucene.NET 没有日期或日期范围查询的字段类型。因此,通常有两种存储方式可供选择,索引和搜索日期。

  1. 您可以将它们作为字符串处理,例如使用年月日格式,即 2021 年 7 月 11 日的 210711 或 20210711;或
  2. 您可以通过存储代表日期的刻度或毫秒来处理它们。

然后,根据您选择的方式,您可以使用 TermRangeQueryNumericRangeQuery 进行搜索。两种方法都可以只处理日期或日期和时间。

还值得知道的是,Lucene.NET 包含一个 DataTools 静态类,该类具有用于将 DateTime 转换为字符串并以不同级别的分辨率返回的实用方法,即

"yyyy";
"yyyyMM";
"yyyyMMdd";
"yyyyMMddHH";
"yyyyMMddHHmm";
"yyyyMMddHHmmss";
"yyyyMMddHHmmssfff";

希望这足以让您继续前进。