Sitecore 7 検索 API を使用してクエリを実行しようとしています。クエリには、多数の DateTime where 句が含まれています。以下の例では、EffectiveFrom と EffectiveTo は DateTime プロパティです。
var index = ContentSearchManager.GetIndex("sitecore_web_index");
using (var context = index.CreateSearchContext())
{
var schedules = context.GetQueryable<ScheduleSearchResultItem>()
.Where(item => item.EffectiveFrom <= DateTime.Now)
.Where(item => item.EffectiveTo >= DateTime.Now);
foreach (var schedule in schedules)
{
//...
}
}
ScheduleSearchResultItem
から継承されSitecore.ContentSearch.SearchTypes.SearchResultItem
、次のようになります。
/// <summary>
/// Search result item for event schedules
/// </summary>
public class ScheduleSearchResultItem : SearchResultItem
{
/// <summary>
/// EffectiveFrom field
/// </summary>
[TypeConverter(typeof(IndexFieldDateTimeValueConverter))]
[IndexField("effectivefrom")]
public DateTime EffectiveFrom { get; set; }
/// <summary>
/// EffectiveTo field
/// </summary>
[TypeConverter(typeof(IndexFieldDateTimeValueConverter))]
[IndexField("effectiveto")]
public DateTime EffectiveTo { get; set; }
// ...
}
これは、Sitecore 7 の最初のリリースで機能していましたが、「文字列は有効な DateTime として認識されませんでした」というメッセージがスローされます。Sitecore 7 Update-1 のエラー。
私は何十ものインデックス構成を試しIndexFieldDateTimeValueConverter
、ScheduleSearchResultItem
. これらのアイテムに yyyyMMdd 形式の日付が含まれていることを Luke 経由で確認しました。とはいえ、私のアイテムのすべてがeffectivefromフィールドとeffectivetoフィールドを持っているわけではありません。
他の誰かが同じ動作を経験していますか?