2012-01-09 24 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> 

Obviousl y日付の範囲が適切にインデックスに入力されることを確認する構文を理解する必要があります。日付を照会する適切な方法ですが、ここでわかりやすくするためです。

したがって、私は、要求された時間に利用可能なアイテムのみを返すことを望みます。

例:2012年2月13日〜2月16日の日付が渡された場合、項目1は返されますが、項目2は返されません。

私の質問: - これはSolrが日付範囲のクエリ機能でサポートしていますか? - パフォーマンスに関する懸念はありますか?

ご提供いただける洞察力がありがとうございました。

答えて

1

Solrは日付を非常にうまくサポートしています。他のフィールドと同様に範囲クエリを使用できます。SolrQuerySyntaxただし、フィールドは日付範囲自体ではなく、単一の日付でなければなりません。

状況に応じて、範囲(多値フィールド)にある必要がある毎日unavailableDateRangeフィールドにリストします。インデックスはそれよりはるかに大きくなるべきではなく、インデックス作成やクエリのためにボットを実装するのは簡単です。

例クエリ:

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