2012-02-09 63 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)的正確方法。