1

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 のエラー。

私は何十ものインデックス構成を試しIndexFieldDateTimeValueConverterScheduleSearchResultItem. これらのアイテムに yyyyMMdd 形式の日付が含まれていることを Luke 経由で確認しました。とはいえ、私のアイテムのすべてがeffectivefromフィールドとeffectivetoフィールドを持っているわけではありません。

他の誰かが同じ動作を経験していますか?

4

1 に答える 1

3

これは、ローカライズされた問題であることが判明しました。アップグレード プロセス中に、Sitecore.ContentSearch.Solr.Indexes.configファイルがどういうわけか、Includes フォルダーに移動しました。Solr を使用していないため、このファイルを削除すると問題が解決しました。

于 2013-08-20T00:50:54.503 に答える