在Sitecore 7 Update-1中按DateTime搜索

时间:2013-08-19 22:21:50

标签: sitecore lucene.net sitecore7

我正在尝试使用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的初始版本一起使用,但是,现在它会在Sitecore 7 Update-1中抛出“字符串未被识别为有效的DateTime。”错误。

我尝试过几十种索引配置,以及在IndexFieldDateTimeValueConverter上添加和删除ScheduleSearchResultItem属性。我已通过Luke确认这些项目确实包含yyyyMMdd格式的日期。也就是说,并非我的所有项目都有有效从有效到字段。

其他遇到相同行为的人?

1 个答案:

答案 0 :(得分:3)

这结果是一个本地化的问题。在升级过程中,Sitecore.ContentSearch.Solr.Indexes.config文件以某种方式进入了我的Includes文件夹。我没有使用Solr,删除此文件解决了这个问题。