我正在尝试使用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格式的日期。也就是说,并非我的所有项目都有有效从和有效到字段。
其他遇到相同行为的人?
答案 0 :(得分:3)
这结果是一个本地化的问题。在升级过程中,Sitecore.ContentSearch.Solr.Indexes.config
文件以某种方式进入了我的Includes文件夹。我没有使用Solr,删除此文件解决了这个问题。