Search Sitecore高级数据库爬虫程序空日期
我的索引中有一个属性(使用高级数据库爬虫)用于存档日期Search Sitecore高级数据库爬虫程序空日期,search,sitecore,lucene.net,Search,Sitecore,Lucene.net,我的索引中有一个属性(使用高级数据库爬虫)用于存档日期 我想查找日期为空或将来为空的所有项目……日期范围搜索将完成第二部分,但第一部分如何?您不能对Lucene执行空搜索。我过去所做的是测试emtpy字段,并在索引中插入单词“EMPTY”。然后,当查询索引时,您需要添加一个测试来检查该术语的存在(或不存在)。这样做感觉有点脏,但这是我在与Sitecore和Lucene合作的3年中找到或想出的唯一解决方案。在DateFieldCrawler类中,我们修改了以下代码: public override
我想查找日期为空或将来为空的所有项目……日期范围搜索将完成第二部分,但第一部分如何?您不能对Lucene执行空搜索。我过去所做的是测试emtpy字段,并在索引中插入单词“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);
凯尔-我们就是这么做的。Alex Shyba给了我一些说明,说明了当日期字段存储在索引中时如何修改它——因此我用DateTime.MinValue替换了空值——这使它能够工作。