0

アーカイブ日付のプロパティが(Advanced Database Crawlerを使用して)インデックスにあります。

日付がnullまたは将来のすべてのアイテムを検索したいのですが、日付範囲検索で2番目の部分が実行されますが、最初の部分はどうでしょうか。

4

2 に答える 2

1

Luceneに対してnull検索を実行することはできません。私が過去に行ったことは、空のフィールドをテストし、インデックスに「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;
}

この値を保存することで、次のクエリを実行してnull値の日付を含めることができました。

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 に答える