Имам свойство в моя индекс (с помощта на Advanced Database Crawler) за дата на архив.
Искам да намеря всички елементи, където датата е нула или е в бъдещето... Търсенето на диапазон от дати ще изпълни втората част, но какво да кажем за първата?
Имам свойство в моя индекс (с помощта на Advanced Database Crawler) за дата на архив.
Искам да намеря всички елементи, където датата е нула или е в бъдещето... Търсенето на диапазон от дати ще изпълни втората част, но какво да кажем за първата?
Не можете да направите нулево търсене срещу Lucene. Това, което направих в миналото, е да тествам за празни полета и да вмъкна думата „ПРАЗЕН“ в индекса. След това, когато правите заявка за индекса, трябва да добавите тест, който проверява наличието (или липсата) на този термин. Чувствам се някак мръсно, като го правя по този начин, но това е единственото решение, което успях да намеря или измисля през 3-те години, в които работя със Sitecore и Lucene.
В класа 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);