アーカイブ日付のプロパティが(Advanced Database Crawlerを使用して)インデックスにあります。
日付がnullまたは将来のすべてのアイテムを検索したいのですが、日付範囲検索で2番目の部分が実行されますが、最初の部分はどうでしょうか。
アーカイブ日付のプロパティが(Advanced Database Crawlerを使用して)インデックスにあります。
日付がnullまたは将来のすべてのアイテムを検索したいのですが、日付範囲検索で2番目の部分が実行されますが、最初の部分はどうでしょうか。
Luceneに対してnull検索を実行することはできません。私が過去に行ったことは、空のフィールドをテストし、インデックスに「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;
}
この値を保存することで、次のクエリを実行してnull値の日付を含めることができました。
DateRangeSearchParam.DateRange toFirstDate =
new DateRangeSearchParam.DateRange(EVENT_FIRST_DATE,
DateTime.MinValue, toDate.Value);
toFirstDate.InclusiveEnd = false;
eventDates.Add(toFirstDate);