2011-05-06 98 views
1

我使用Solr作爲屬性預訂引擎的一部分 - 我的條目具有多值日期字段,該字段存儲該屬性已預訂的日期,因此不可用。我希望能夠對此進行查詢,並返回指定窗口內沒有日期的條目。Solr多值日期字段,範圍查詢匹配「任何」/「計數」?

我是那裏的一半 - 但現在Solr似乎返回條目,如果它甚至有一個空閒日期 - 我希望它只返回完全在該範圍內空的條目。我的實體的例子:

<doc> 
    <arr name="DateBlockDates"> 
     <date>2011-02-25T00:00:00Z</date> 
     <date>2011-02-26T00:00:00Z</date> 
     <date>2011-02-27T00:00:00Z</date> 
    </arr> 
</doc> 

查詢在這種情況下的偉大工程:

-DateBlockDates:[2011-02-25T00:00:00Z TO 2011-02-27T00:00:00Z] 

因爲實體確實有這些天,每一個日期塊。但是,當我運行時:

-DateBlockDates:[2011-02-25T00:00:00Z TO 2011-02-28T00:00:00Z] 

實體得到返回,因爲它沒有2011-02-28的條目。

爲了把我的問題放到老派的SQL中,我想要做一個「count(DateBlockDates)= 0」。有任何想法嗎?

回答

2

這是最好的解決方案我已經出來與 - 不使用範圍日期查詢,而不是使用:

-DateBlockDates:"2011-02-25T00:00:00.000Z" 
AND -DateBlockDates:"2011-02-26T00:00:00.000Z" 
AND -DateBlockDates:"2011-02-27T00:00:00.000Z" 
AND -DateBlockDates:"2011-02-28T00:00:00.000Z" 

它的混亂,但它的作品。謝天謝地,我將要處理相對較小的日期範圍,因此查詢不會太長。但如果有更好的解決方案,我很樂意聽到它。

+0

嗨阿拉斯泰爾,你有沒有找到一個更好的解決方案呢?我試圖存儲多個日期時間值,並能夠對它們進行日期範圍搜索。 – 2012-01-09 12:26:03

+0

考慮將日期/時間轉換爲UTC(如果尚未),則轉換爲代表自紀元以來的秒數的整數值。應該允許更多的經驗日期範圍查詢 – xentek 2012-10-30 20:36:10