0

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

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

4

2 回答 2

1

您不能对 Lucene进行空搜索。我过去所做的是测试空字段并在索引中插入单词“EMPTY”。然后在查询索引时,您需要添加一个测试来检查该术语的存在(或不存在)。这样做感觉有点脏,但这是我在与 Sitecore 和 Lucene 合作的 3 年中能够找到或想出的唯一解决方案。

于 2012-07-05T10:23:10.170 回答
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);
于 2012-07-05T19:26:57.997 回答