我遇到了一个以前为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']
Newsletter项目也不是Newsletters项目的直接子项,中间还有另一层。
那么为什么查询1在2& 3准确回报我需要的东西?
答案 0 :(得分:4)
答案 1 :(得分:0)
检查“新闻”的后代数是否在Web配置(<setting name="Query.MaxItems" value="100" />
)中设置的最大返回项目大小之下。
虽然您在查看后代时没有返回项目,但旧版本的Sitecore可能只查看最大项目数(这将是一个错误)。查询3工作而查询1不工作的事实告诉我,这可能是问题所在。查询2试图做同样的事情,但查询1和3也恰好是相同的语法。因为这三个都是为了做同样的事情(唯一的例外是/News/Newsletters
从更深的根项目看),我希望这是一个bug。
您可以通过将Query.MaxItems
设置的值设置为一个非常高的数字(例如5000)进行测试(请注意,您应该在测试后将值更改回来,因为这会极大地降低性能)。如果查询1现在返回项目,那么这是您的问题。否则,请尝试将值设置得更高。如果之后仍然没有返回值,那么这不是你的问题。
如果您有任何疑问,请告诉我。祝你好运,编码愉快! :)