組態

Sitecore 附帶一組預先配置的標準索引,你可以擴充套件,也可以定義自己的索引。在預配置中,sitecore_master_indexsitecore_web_index 是你網站搜尋最感興趣的。這些是主資料庫和 Web 資料庫樹中所有 Sitecore 項的預定義索引,並配置為儲存所有模板中通用的 Sitecore 項的所有標準欄位。

你可以在此位置檢視標準 Web 索引的此配置:<Your Site>\App_Config\Include\Sitecore.ContentSearch.Lucene.Index.Web.config

索引配置的主要重要領域是:

  • 欄位配置 - 索引中應儲存哪些欄位以及如何儲存它們。
  • 策略 - 如何以及何時更新索引。
  • Crawler - 索引可以獲取 Sitecore 資料的位置

現場配置

檢視 sitecore_web_index 配置,你可以看到以下參考:<configuration ref="contentSearch/indexConfigurations/defaultLuceneIndexConfiguration" />。這是指在此處找到的共享索引配置檔案:<Your Site>\App_Config\Include\Sitecore.ContentSearch.Lucene.DefaultIndexConfiguration.config。在這裡,你可以看到標準配置中包含的所有欄位。

基本上有兩種方法來定義欄位:欄位直接來自 Sitecore 項欄位,或者它是計算欄位。計算欄位允許你編寫一些程式碼來進行一些計算並將結果儲存在欄位中。在構建/更新索引時,不會在查詢索引時執行此程式碼。如果欄位需要儲存聚合資料(例如計數等),這將特別有用。

<fieldMap> 元素中,你將看到元素 <fieldNames hint="raw:AddFieldByFieldName"><fields hint="raw:AddComputedIndexField">,它們分別包含直接源欄位和計算欄位。

策略

索引的策略確定索引何時更新。有以下選項可供選擇:

  • OnPublishEndAsynchronousStrategy(onPublishEndAsync) - 釋出專案時,索引將非同步更新。
  • SynchronousStrategy(syncMaster) - 儲存專案時,索引將立即同步更新。
  • IntervalAsynchronousStrategy(intervalAsyncCore / intervalAsyncMaster) - 定期檢查專案更新並非同步更新索引
  • ManualStrategy - 無自動索引更新。索引只能手動更新(通過控制面板或以程式設計方式)
  • RebuildAfterFullPublishStrategy(rebuildAfterFullPublish) - 釋出後,索引將全部重建
  • RemoteRebuildStrategy(remoteRebuild) - 此策略適用於 Sitecore 的多個例項。例如,如果從內容管理伺服器呼叫重建,則遠端內容傳遞伺服器將訂閱此事件並重建其自己的索引。

預設情況下,主索引配置為 syncMaster。這是因為如果你在體驗編輯器中儲存專案並在頁面上呈現顯示索引的結果,你將希望看到你在結果中立即對專案所做的更改。Web 索引配置為 onPublishEndAsync,這是因為當從 master 資料庫向 Web 釋出專案時,Web 資料庫的索引只需要更新。

你還可以組合多種策略。例如,如果你的內容管理(CM)和內容交付(CD)具有單獨的 Sitecore 例項,則將 onPublishEndAsyncremoteRebuild 結合起來是有意義的,這樣 CD 專案釋出時就會更新 CD 索引,並在使用者從 CM 伺服器的控制面板觸發重建。

你可以使用以下配置選擇策略:

<strategies hint="list:AddStrategy">
    <strategy ref="contentSearch/indexConfigurations/indexUpdateStrategies/onPublishEndAsync" />
</strategies>

爬行者

這允許你指定要編制索引的 Sitecore 資料的位置。Web 索引具有以下預設配置:

<locations hint="list:AddCrawler">
    <crawler type="Sitecore.ContentSearch.SitecoreItemCrawler, Sitecore.ContentSearch">
        <Database>web</Database>
        <Root>/sitecore</Root>
    </crawler>
</locations> 

兩個重要的位是 <Database><Root> 元素。<Root> 元素允許你指定 Sitecore 樹中索引應該索引的起始位置。實際上,你可能在內容節點下有一個 Home 節點,你可以將其指向此節點,以便它僅對實際內容/頁面而不是模板等進行索引。