Sitecore是否自动使用快速查询?

Dan*_*vay 7 sitecore

根据Sitecore数据定义参考,版本6.4,第4.3.1节:

Sitecore使用可能的禁用技术处理查询.如果数据提供程序支持所请求的查询,则可以是SQL数据库,也可以是Sitecore数据管理器.

如果是这样,使用"fast:"语法有什么好处吗?什么版本的自动技术选择被引入?

更新 我想我弄清楚了.Reqular Sitecore查询只有在没有谓词的情况下才能使用SQL Server.快速查询允许简单谓词(例如*[@ somefield ='somevalue']),同时仍然使用SQL Server.

来自Sitecore CMS 6.4数据定义参考(第4.3.4节):

SQL Server数据提供程序不支持谓词(用方括号括起来的搜索字符串部分:[@ IsHidden!='1']).

Sitecore CMS 6使用Sitecore快速查询(第4.2节):

本节介绍Sitecore Fast Query中可用的谓词.谓词总是嵌在方括号中.

Example: fast:/sitecore/content/Home/*[@Title = 'Welcome to Sitecore']  
Run Code Online (Sandbox Code Playgroud)

结果:返回将"标题"字段的值设置为"欢迎使用Sitecore"的项目.搜索在Home Item的子项中执行.

Mar*_*ino 12

从Sitecore查询项目有几种不同的方法:

  • Sitecore查询
  • 快速查询
  • Lucene的

每种方法都有自己的优点和缺点.例如,Sitecore Query和Fast Query都可以限制他们可以返回的项目数.此限制是在中的Query.MaxItems设置web.config.另一方面,Lucene是它自己的野兽,使用存储在磁盘上的搜索索引来访问项目.

Sitecore查询在查询中过滤项目方面是最灵活的,但是查询越复杂,运行所需的时间就越长(这是一种推广).通常更容易制作更通用的查询,然后使用.NET来过滤它,就像LINQ一样.快速查询直接进入数据库进行查询,因此对过滤有限制.它的运行速度更快,但您不能像查询查询中那样精确.

Lucene是另一种方法,因为它使用搜索索引来查询内容和过滤.这需要预先进行额外的配置工作并维护搜索索引.

这可以帮助您决定采取哪种方法:

  • 100项或更少:Sitecore查询
  • 1000件或更少:快速查询
  • 1000多件物品:Lucene

我之前也写了关于同一主题的博文: