Sitecore日期比较不存在';我们不能返回预期的结果

Sitecore日期比较不存在';我们不能返回预期的结果,sitecore,sitecore8,Sitecore,Sitecore8,我试图使用iqueryable查询返回课程列表,但在某些日期比较方面遇到问题 我目前正在使用代码 query = query.Where(r => r.EndDate >= DateTime.UtcNow); 它返回日期为将来的课程,但不会返回日期晚于DateTime.UtcNow返回时间的当天结束的课程 你知道我做错了什么吗 我刚刚用Luke检查了索引,如果我用 end_date:[20170531t092205609z TO *] 我得到了我需要的确切结果,但是在实际查询使用

我试图使用iqueryable查询返回课程列表,但在某些日期比较方面遇到问题

我目前正在使用代码

query = query.Where(r => r.EndDate >= DateTime.UtcNow);
它返回日期为将来的课程,但不会返回日期晚于DateTime.UtcNow返回时间的当天结束的课程

你知道我做错了什么吗

我刚刚用Luke检查了索引,如果我用

end_date:[20170531t092205609z TO *]
我得到了我需要的确切结果,但是在实际查询使用的日志中

+end_date:[20170531t092205609z TO *] +_template:a84b75fccac64eafa746f4b71e628adc - Filter : 
然后我得到了更多的结果,包括我错过的课程

a) 为什么使用第二个查询返回更多结果?

b) 为什么在我的C#代码中返回的结果与搜索结果不匹配?

也有类似的问题,并在此处介绍了我们的解决方案:

我们的问题有两个原因:

  • 第一个原因是Sitecore将其日期时间存储为UTC(与本地时间相差一小时)
  • 第二个原因是Sitecore在日期中使用“t”作为查询中的小写字母。然而,在我的索引中,它们都是大写的。如果我尝试与Luke进行查询,它确实会给出错误的结果。。当我在Luke中更改查询以使用大写字母T时,它会正常工作
我们找到的最简单的解决方案是索引配置中的format属性:



(注意格式=“…”

您能在搜索日志文件中检查发送到索引的查询是什么吗?@MarekMusielak这是发送到28688 10:22:05信息执行器针对Lucene(网站\网络\事件\搜索\索引):+结束日期:[20170531T09205609Z to*]+_模板:a84b75fccac64eafa746f4b71e628adc-Filter:问题是即使使用小写的t,我也会返回结果