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

时间:2015-09-30 05:46:47

标签: lucene cloudant nosql

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

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

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

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查询字符串。造成这种情况的原因是什么?

2 个答案:

答案 0 :(得分:4)

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

  

日期字段的格式应为1995-12-31T23:59:59Z尾随   “Z”表示UTC时间并且是强制性的

     

此格式源于符合标准(ISO 8601)并且是a   来自dateTime的规范表示的更受限制的形式   XML模式第2部分。示例......

     

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

答案 1 :(得分:0)

我是按照以下方式做到的

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

并在cloudant中使用关键字分析器

此链接解释了这一切 https://lucene.apache.org/core/2_9_4/queryparsersyntax.html