我的索引中有一个属性(使用高级数据库爬虫)作为存档日期。
我想查找日期为空或将来的所有项目......日期范围搜索将完成第二部分,但第一部分呢?
我的索引中有一个属性(使用高级数据库爬虫)作为存档日期。
我想查找日期为空或将来的所有项目......日期范围搜索将完成第二部分,但第一部分呢?
您不能对 Lucene进行空搜索。我过去所做的是测试空字段并在索引中插入单词“EMPTY”。然后在查询索引时,您需要添加一个测试来检查该术语的存在(或不存在)。这样做感觉有点脏,但这是我在与 Sitecore 和 Lucene 合作的 3 年中能够找到或想出的唯一解决方案。
在 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);