按日期过滤时,无法从Solr检索预期文档

时间:2012-02-09 19:05:45

标签: date solr

我实际上无法从Solr检索文档。我这样提交了它:

<add>
  <doc>
    <field name="id">1</field>
    <field name="date_online">2012-02-09T19:46:00Z</field>
  </doc>
</add>

date_online字段填入当前日期,schema.xml中的类型定义如下:

<field name="date_online" type="tdate" indexed="true" stored="false" />

在我提交文档并发布了一个提交命令后,当我使用q=*:*fq=date_online:[* TO NOW/MINUTE]进行搜索时,我无法检索刚刚提交的文档。当然,日期一定有问题,但我已经检查了服务器上的时间并且是正确的,而且我已经能够在本地重现问题。

有人知道为什么我无法检索该文件吗?为什么它不匹配我的查询?

1 个答案:

答案 0 :(得分:0)

问题当然是约会!我发现我只能在一小时后检索到文件,所以我想出来了。 Solr使用UTC时间,我发送的是我的实际时区(GMT + 1)的日期和时间,这就是为什么我只能在一小时后获得文档。实际上,在将其提交给Solr之前,需要将时间转换为UTC格式。

比如说它是格林威治标准时间6点+ 1,对于索尔来说,它只是5点钟(UTC)。如果您发送的文档的日期字段包含例如2012-02-09T18:00:00Z(该日期不包含任何有关时区的信息),那么Solr就是6点UTC。如果您像我一样过滤该日期,您将在一小时后看到该文档。在将文档发送给Solr之前,正确的方法是将日期转换为UTC(在这种情况下为2012-02-09T17:00:00Z)。