2011-05-01 24 views
7

根據Sitecore的數據定義參考,版本6.4,第4.3.1節:Sitecore會自動使用Fast Query嗎?

Sitecore的處理使用 禁食技術可能出現的問題。如果 數據提供程序支持請求的 查詢,或者在Sitecore數據 管理器中,這可能是 或SQL數據庫。

如果是這樣,使用「fast:」語法有什麼好處嗎?隨着自動化技術選擇的推出發佈了什麼?

更新 我想我想通了。如果沒有謂詞,則Requra Sitecore查詢只能使用SQL Server。 Fast Query允許簡單的謂詞(例如* [@ somefield ='somevalue']),同時仍然使用SQL Server。

Sitecore的CMS 6.4數據定義參考(第4.3.4節):

SQL Server數據提供程序不支持 謂詞(括在方括號 的 搜索字符串的一部分: [@IsHidden!='1'])。

Sitecore的CMS 6使用Sitecore的快速查詢(第4.2節):

本節介紹了Sitecore的可用的謂詞 快速 查詢。謂詞是始終嵌入方括號中的 。

Example: fast:/sitecore/content/Home/*[@Title = 'Welcome to Sitecore'] 

結果:返回一個有「標題」字段設置爲「歡迎來到Sitecore的」價值的物品。在家庭物品的孩子中執行搜索 。

回答

12

有幾種不同的方法來查詢的項目從Sitecore的:

  • Sitecore的查詢
  • 快速查詢
  • Lucene的

每種方法都有自己的優點和缺點。例如,Sitecore查詢和Fast Query對它們可以返回的項目數量都有限制。此限制是web.config中的Query.MaxItems設置。另一方面,Lucene是它自己的野獸,並使用存儲在磁盤上的搜索索引來訪問項目。

Sitecore查詢在查詢中過濾項目是最靈活的,但查詢越複雜,運行時間就越長(這是泛化)。通常情況下,使用.NET來進行更通用的查詢來過濾它,就像LINQ一樣。快速查詢直接進入數據庫進行查詢,從而限制了過濾。它運行速度更快,但無法像查詢查詢時那樣精確。

Lucene是另一種方法,因爲它使用搜索索引來查詢內容和過濾器。這需要預先進行額外的配置工作並維護搜索索引。

這可以幫助你決定採取哪一種方法:

  • 100件或更少:Sitecore的查詢
  • 1000個項目或更少:快速查詢
  • 1000+項目:Lucene的

我以前也寫過關於這個主題的博客文章:

+0

感謝這些信息,這很有幫助。我試圖在我的問題中想到的主要觀點是Sitecore對Sitecore查詢的優化,以及它們與Fast查詢的區別。 – 2011-05-07 03:33:16

+0

不確定你的意思是優化。你在說什麼Sitecore API做什麼或Sitecore的開發人員做什麼?歸結起來就是快速查詢更快,因爲它可以直接訪問數據庫,但在查詢中提供的功能較少。基本上,可以這樣想:如果您有一個非常通用的查詢,並不需要很複雜,那麼爲什麼要打擾Sitecore查詢,如果可以通過快速查詢使查詢速度更快?對於非常複雜的查詢,您可能只需要解決Sitecore查詢問題。大多數查詢應該由快速和大型數據集查詢應該使用Lucene來覆蓋。 – 2011-05-08 20:55:04

+0

通過優化,我指的是Sitecore API的功能。根據數據定義參考,Sitecore使用「可能禁食的技術」來處理問題。如果是這樣,Sitecore什麼時候需要「快速:」來訪問數據庫?我在尋找什麼時候Sitecore可以在沒有Fast提示的情況下執行數據庫查詢的具體情況,以及何時需要它。 – 2011-05-14 13:00:58