Нулеви дати на Sitecore Advanced Database Crawler

Имам свойство в моя индекс (с помощта на Advanced Database Crawler) за дата на архив.

Искам да намеря всички елементи, където датата е нула или е в бъдещето... Търсенето на диапазон от дати ще изпълни втората част, но какво да кажем за първата?


person Brian Beckham    schedule 03.07.2012    source източник


Отговори (2)


Не можете да направите нулево търсене срещу Lucene. Това, което направих в миналото, е да тествам за празни полета и да вмъкна думата „ПРАЗЕН“ в индекса. След това, когато правите заявка за индекса, трябва да добавите тест, който проверява наличието (или липсата) на този термин. Чувствам се някак мръсно, като го правя по този начин, но това е единственото решение, което успях да намеря или измисля през 3-те години, в които работя със Sitecore и Lucene.

person Kyle Heon    schedule 05.07.2012
comment
Кайл - направихме точно това. Alex Shyba ми даде някои инструкции как да променя полето за дата, когато се съхранява в индекса - така че замених празната стойност с DateTime.MinValue - което му позволи да работи. - person Brian Beckham; 05.07.2012

В класа 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);
person Brian Beckham    schedule 05.07.2012