我的索引中有一个属性(使用高级数据库抓取工具)作为存档日期。
我想找到日期为null或将来的所有项目....日期范围搜索将完成第二部分,但第一部分呢?
答案 0 :(得分:1)
您无法对Lucene进行 null 搜索。我过去所做的是测试emtpy字段并在索引中插入单词“EMPTY”。然后,在查询索引时,您需要添加一个检查该术语是否存在(或不存在)的测试。这种方式感觉很脏,但这是我在Sitecore和Lucene工作的3年里能够找到或提出的唯一解决方案。
答案 1 :(得分:0)
在DateFieldCrawler类中,我们修改了以下代码:
public override string GetValue()
{
if (String.IsNullOrEmpty(_field.Value))
{
return DateTools.DateToString(DateTime.MinValue, DateTools.Resolution.DAY);
}
if (FieldTypeManager.GetField(_field) is DateField)
{
var dateField = new DateField(_field);
if(dateField.DateTime > DateTime.MinValue)
{
return DateTools.DateToString(dateField.DateTime, DateTools.Resolution.DAY);
}
}
return String.Empty;
}
通过存储此值,我们能够执行以下查询以包含空值日期:
DateRangeSearchParam.DateRange toFirstDate =
new DateRangeSearchParam.DateRange(EVENT_FIRST_DATE,
DateTime.MinValue, toDate.Value);
toFirstDate.InclusiveEnd = false;
eventDates.Add(toFirstDate);