2012-02-09 61 views
1

我实际上无法从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]进行搜索时,我无法检索到我刚刚提交的文档。当然,日期必须有问题,但我已经检查了服务器上的时间并且是正确的,而且我也能够在本地重现问题。

有人知道我为什么无法检索该文档吗?为什么它不符合我的查询?

回答

0

问题当然是日期!我发现只有一个小时后才能找到文档,所以我想清楚了。 Solr使用UTC的时间,我发送的日期和时间为我的实际时区(GMT + 1),这就是为什么我只能在一小时后才能获得文档。事实上,在将时间提交给Solr之前,需要将时间转换为UTC格式。例如,我们假设它是GMT + 1的6点,对于Solr它只是5点(UTC)。如果您发送包含例如2012-02-09T18:00:00Z(该日期不包含任何关于时区的信息)的日期字段的文档,那么对于Solr,它是UTC的6点。如果您像我这样过滤日期,那么只会在一小时后看到该文档。在将文档发送到Solr之前,将日期转换为UTC(在这种情况下为2012-02-09T17:00:00Z)的正确方法。