如何使用 Lucene 查询包含日期的 ravendb 索引



我正在使用http api来查询ravendb(所以LINQ查询不是我问题的解决方案)。我的产品文档如下所示:

{
  "editDate": "2012-08-29T15:00:00.846Z"
}

我有索引:

from doc in docs.Product
select new { doc.editDate }

我想查询特定日期和时间之前的所有文档。我可以使用以下语法查询 DATE:

editDate: [NULL TO 2012-09-17]

但是我也不知道如何查询时间部分。有什么想法吗?

您可以使用以下命令进行查询:

 editDate: [NULL TO 2012-09-17T15:00:00.846Z]

如果您关心其中的一部分,请使用:

 editDate: [NULL TO 2012-09-17T15:00]

请注意,您可能必须转义查询的某些部分,如下所示:

 editDate: [NULL TO 2012-09-17T15:00]

为此,您还需要确保对字段进行分析。在 Raven Studio - 添加字段 -> editDate 中,并将"索引"设置为"已分析"。

解决此问题的一种方法是将值存储为自 unix 纪元以来的秒数,而不是日期。

这会产生一个可以轻松比较的数字。

我正在使用javascript和moment js库:

{
  "editDate": "2012-08-29T15:00:00.846Z",
  "editDateUnix": moment("2012-08-29T15:00:00.846Z").unix()
}

我的任何索引:

from doc in docs.Product
select new { doc.editDate, doc.editDateUnix }

和我的 Lucene 查询:

"editDate: [NULL TO "+moment("2012-09-17").unix()+"]"

最新更新