Sitecore高级数据库爬网程序null日期

时间:2012-07-03 15:24:36

标签: search sitecore lucene.net

我的索引中有一个属性(使用高级数据库抓取工具)作为存档日期。

我想找到日期为null或将来的所有项目....日期范围搜索将完成第二部分,但第一部分呢?

2 个答案:

答案 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);