2012-01-09 83 views
0

我需要從Solr返回基本上具有「中斷期」的文檔。在Solr中非規範化和搜索日期範圍

所以,我需要返回沒有針對在通過的日期範圍定義的封鎖期的所有文件。

我目前仍然通過「架構設計階段」的工作,但希望以確保我試圖完成什麼是可能的和邏輯與Solr(一旦加入可用,這似乎是微不足道的,但在那時......)

我在想這樣的事情,使用多值字段:

<doc> 
    <field name="id">1</field> 
    <field name="name">My Item Name</field> 
    <field name="unavailableDateRange">1/23/2012-1/27/2012</field> 
    <field name="unavailableDateRange">3/14/2012-3/19/2012</field> 
</doc> 
<doc> 
    <field name="id">2</field> 
    <field name="name">My Item Name</field> 
    <field name="unavailableDateRange">2/15/2012-2/20/2012</field> 
</doc> 

很明顯Ÿ我需要弄清楚的語法,以確保物品在搜索時的日期範圍進入正常的指數,以及查詢日期的正確方法,但爲了清楚起見這裏....

所以, ,我只想返回在請求時間內可用的項目。

例如:如果日期2/13/2012 - 2012/2/16沒有成交,第1項將被返回,但第2項不會。

我的問題: - 這是東西的Solr的日期範圍查詢功能支持? - 我在這裏應該注意哪些性能問題?

謝謝你提前爲任何見解可以提供。

回答

1

Solr的支持日期,非常漂亮。您可以使用任何其他字段上的範圍查詢:SolrQuerySyntax但是,字段必須是單一日期,而不是日期範圍本身。

對於你情我願每天都應該在範圍內(多值字段)列出unavailableDateRange領域。索引不應該那麼大,並且很容易實現機器人索引和查詢。

實施例的查詢:

./select/?q=NOT unavailableDateRange:[2012-02-13T00:00:00Z TO 2012-02-16T00:00:00Z]