Использует ли Sitecore Fast Query автоматически? - PullRequest
7 голосов
/ 01 мая 2011

Согласно справочнику по определению данных 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']  

Результат: возвращает элементы, значение поля «Заголовок» которых установлено в «Добро пожаловать в Sitecore».Поиск производится у детей из Home Item.

1 Ответ

12 голосов
/ 01 мая 2011

Существует несколько различных подходов к запросам элементов из Sitecore:

  • Запрос Sitecore
  • Быстрый запрос
  • Lucene

КаждыйУ подхода есть свои плюсы и минусы.Например, Sitecore Query и Fast Query имеют ограничение на количество элементов, которые они могут вернуть.Этот предел является настройкой Query.MaxItems в web.config.Lucene, с другой стороны, является собственным зверьком и использует поисковые индексы, хранящиеся на диске для доступа к элементам.

Запрос Sitecore является наиболее гибким с точки зрения фильтрации элементов прямо в запросе, однако чем сложнее ваш запрос,чем дольше будет работать (это обобщение).Часто проще сделать более общий запрос, чем использовать .NET для его фильтрации, например, LINQ.Быстрый запрос идет прямо в базу данных для запроса и, таким образом, имеет ограничение на фильтрацию.Он работает быстрее, но вы не можете быть настолько детализированы с тем, что хотите проверить в своем запросе.

Lucene - это другой подход, так как он использует поисковые индексы для запроса содержимого и фильтрации.Это требует дополнительной настройки конфигурации и обслуживания поискового индекса.

Это может помочь вам решить, какой подход выбрать:

  • 100 или менее элементов: Sitecore Query
  • 1000 элементов или меньше: быстрый запрос
  • 1000 + элементов: Lucene

Я также ранее писал в блоге на эту же тему:

...