我们正在使用 SolrNet API 来索引和搜索一组包含三个日期字段的文档:Date1、Date2、Date3。C# 类对三个字段有以下定义
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 格式的有效日期时,为什么其他日期会获得空值?
将日期字段存储为 Solr 中的字符串并使用复制字段将其存储为 solr 日期格式并将此字段用于日期范围查询是否更好?