SolrNet APIを使用して、Date1、Date2、Date3の3つの日付フィールドを含む一連のドキュメントのインデックス作成と検索を行っています。C#クラスには、3つのフィールドに対して次の定義があります
public DateTime? Date1{ get; set; }
public DateTime? Date2{ get; set; }
public DateTime? Date3{ get; set; }
Solrスキーマの定義は次のとおりです。
<field name="Date1" type="date" indexed="false" stored="true" required="false"/>
<field name="Date2" type="date" indexed="false" stored="true" required="false"/>
<field name="Date3" type="date" indexed="false" stored="true" required="false"/>
すでにインデックスが作成されているドキュメントを使用してクエリを実行すると、SolrAdminインターフェイスに次の値が返されます。
<date name="Date1">0001-01-01T00:00:00Z</date>
<date name="Date2">2010-04-10T08:21:18.281Z</date>
<date name="Date3">2007-12-01T03:09:41.093Z</date>
ただし、SolrQueryResultsで返されるC#オブジェクトを調べると、次のように表示されます。
Date1 : {01-01-0001 12:00:00 AM}
Date2 : null
Date3 : null
最初の日付は、予想される日時の最小値として表されています。しかし、他の日付がUTC形式の有効な日付であるのに、なぜ他の日付がnull値を取得するのでしょうか。
日付フィールドを文字列としてSolrに格納し、コピーフィールドを使用してsolr日付形式で格納し、このフィールドを日付範囲クエリに使用する方がよいでしょうか。