Sitecore快速查询获取子体查询语法不一致

Sitecore快速查询获取子体查询语法不一致,sitecore,Sitecore,我遇到了一个以前为Sitecore 6.4编写的旧项目,现在更新为Sitecore 7.2 有一个不返回结果的快速查询: 1. fast:/sitecore/content/Home/About Us/News//*[@@templatename='Newsletter'] 我尝试调整查询,这两个都很好: 2. fast:/sitecore/content/Home/About Us/News/descendant::*[@@templatename='Newsletter'] 3. fas

我遇到了一个以前为Sitecore 6.4编写的旧项目,现在更新为Sitecore 7.2

有一个不返回结果的快速查询:

1. fast:/sitecore/content/Home/About Us/News//*[@@templatename='Newsletter']
我尝试调整查询,这两个都很好:

2. fast:/sitecore/content/Home/About Us/News/descendant::*[@@templatename='Newsletter']

3. fast:/sitecore/content/Home/About Us/News/Newsletters//*[@@templatename='Newsletter'] 
时事通讯项目也不是时事通讯项目的直接子项,两者之间还有另一层


那么,为什么查询1不能工作,而查询2和查询3正好返回我需要的内容呢?

检查“News”的子代数是否低于web配置中设置的最大返回项大小(

虽然查看子体时不返回项目,但旧版本的Sitecore可能只查看最大项目数(这可能是一个bug)。查询3起作用而查询1不起作用的事实告诉我,这可能就是问题所在。查询2尝试执行相同的操作,但查询1和查询3的语法也恰好相同。因为这三个都是为了做完全相同的事情(唯一的例外是,
/News/Newsletters
是从更深层的根项目看的),所以我认为这是一个bug

您可以通过将
Query.MaxItems
设置的值设置为一个高得离谱的数字(如5000)来测试这一点(请注意,您应该在测试后重新更改该值,因为这会大大降低性能)。如果查询1现在返回项目,那么这就是您的问题。否则,请尝试将该值设置得更高。如果之后它仍然没有返回值,那么这不是您的问题


如果你有任何问题,请告诉我。祝你好运,编码快乐!:)

  • 检查您的web.config设置以禁用FastQueryDescentsDisabled
  • 通过控制面板、数据库、清理数据库重建子代表

参考资料:

在OP中,他说时事通讯项目也不是时事通讯的直接子项,这对我来说是对
FastQueryDescendant理论的否定。清理数据库绝对是一个好主意,但由于
后代::
axes有效,我也不相信这个理论。我的结论是不是搞错了?文档中说,如果这个设置被切换了,那么重建是必要的。所以我的理论是,这是目前的情况。这将导致看似相似的查询结果不一致。我绝对同意。从未注意到文档的这一部分,也从未在反编译代码中看到它+1我很想知道为什么这篇文章被否决了,这样我就可以改进文章和/或提供进一步的建议。不是我。基于OP中有限的信息,我认为你的建议没有错,并给出了+1感谢,@MarkCassidy-我不认为是你;)另外,我每天都读你的帖子。
查询1有效而查询3无效的事实
-这是打字错误吗?我认为应该是另一种情况(qry 1不起作用,qry 3起作用)。否则理论听起来不错。真是太棒了,@jammykam!更新!