在 Cloudant 的 Lucene 查询字符串中搜索日期和时间

Searching date and time in Lucene query string in Cloudant

我正在尝试编写索引并使用 Cloudant NoSql 数据库中该索引中的日期和时间进行搜索。 当我只传递查询字符串中的日期时,它工作正常

created_date:[2015-08-16 TO 2015-08-27]

这是 returns 正确的结果,但是当我在参数中包含时间时:

created_date:[2015-08-16 07:38:00 TO 2015-08-27 07:38:02]

我收到一个错误:

Cannot parse 'created_date:[2015-08-16 07:38:00 TO 2015-08-27 07:38:02]': Encountered " "TO" "TO "" at line 1, column 50. Was expecting one of: "]" ... "}"

在此之前我还有一些查询参数,但以上是错误的要点。

这是 Apache Lucene 查询字符串。是什么导致了这种情况?

根据 Lucene Java 文档,日期格式应如下所示:

A date field shall be of the form 1995-12-31T23:59:59Z The trailing "Z" designates UTC time and is mandatory

This format was derived to be standards compliant (ISO 8601) and is a more restricted form of the canonical representation of dateTime from XML schema part 2. Examples...

1995-12-31T23:59:59Z 1995-12-31T23:59:59.9Z 1995-12-31T23:59:59.99Z 1995-12-31T23:59:59.999Z

因此,您在日期和时间之间错过了 'T'。

更多信息:https://lucene.apache.org/solr/4_10_4/solr-core/org/apache/solr/schema/DateField.html

我是按照下面的方法做的

created_date:["2015-08-16 07:38:00" TO "2015-08-27 07:38:02"]

并使用了 cloudant 中的关键字分析器

这个link说明了一切 https://lucene.apache.org/core/2_9_4/queryparsersyntax.html