共用方式為


使用目錄管理員

ISearchCatalogManagerISearchCatalogManager2 介面提供管理搜尋目錄的方法,例如觸發重新編製索引或設定超時。 雖然 Windows 搜尋目前只使用一個目錄,但此介面的設計目的是讓您更充分地控制個別管理多個目錄。 介面會以下列方式管理目錄:

  • 存取其他介面 — 存取爬網範圍管理員、資料變更通知以及 ISearchQueryHelper 介面所需的其他搜尋相關介面。
  • 目錄內容 - 確保新數據已編製索引,並且透過強制重新編製全部或部分目錄的索引或重設整個目錄來確保其他應用程式和元件正常運作。
  • 目錄屬性 - 設定屬性,決定目錄在連線到協定處理程式時如何管理逾時,以及在搜尋中如何處理變音符號。
  • 目錄狀態 - 取得目錄的相關信息,包括狀態、大小和目前的活動狀態。

本主題的組織方式如下:

Windows 搜尋平臺中的一些實用介面需要目錄管理員的實例,才能使用它們。 若要為指定的目錄建立目錄管理員,請呼叫 ISearchManager::GetCatalog 方法。 然後,可以使用目錄管理員的方法,來具現化和傳回以指定目錄為基礎的介面。

方法 描述
GetQueryHelper 取得目前目錄 ISearchQueryHelper 介面的實例,可讓您輕鬆地建置查詢。
GetCrawlScopeManager 取得此搜尋目錄的 ISearchCrawlScopeManager 實例,讓開發人員能夠修改 Windows 搜尋索引器的編目範圍。
GetItemsChangedSink 取得 ISearchItemsChangedSink 介面的實例,當用戶端想要索引專案的狀態資訊以支援提供者管理的通知時,用戶端應用程式會用來通知索引器變更。 如需更多資訊,請參閱變更索引通知
GetPersistentItemsChangedSink 取得 ISearchPersistentItemsChangedSink的實例,供用戶端應用程式在不需要編製索引狀態資訊(由索引器管理的通知)時,通知索引器發生變更。 如需詳細資訊,請參閱 「變更索引通知」

管理目錄內容

管理目錄涉及兩個主要工作:重新編製索引器編目範圍中所有或部分 URL 的索引,以及重設整個基礎目錄。 當您重新編製索引 URL 時,舊數據會保留在目錄中,直到或除非它被新數據取代為止。 當您重設目錄時,會重建整個目錄,並重新編製編目範圍中的所有URL索引。 此程式可能需要很多時間,而且應該只作為解決可能損毀索引等問題的最後手段。

當您安裝新的應用程式、通訊協定處理程式或篩選時,安裝程式應用程式應該將其目錄或根新增至編目範圍,以確保索引器包含該應用程式數據的位置。 如果在索引器爬網其範圍後,數據未出現在目錄中,則您應先確定數據的位置是否包含在爬網範圍內。 您可以使用 Windows 搜尋選項的使用者介面或 編目範圍管理員來新增它。 如果位置出現在編目範圍中,您可以使用下列 ISearchCatalogManager 介面的方法,手動強制重新編製索引索引器編目範圍或子集中的所有 URL。

重新編製索引方法 描述
ISearchCatalogManager::Reindex 重新編制目錄中所有 URL 的索引。 舊信息會維持在由新資訊取代之前。
ISearchCatalogManager::ReindexMatchingURLs
ISearchCatalogManager::ReindexSearchRoot
重新編制符合模式或從特定根目錄開始的 URL 索引(例如,file:///C:\Foldername\Subfoldername\)。 這很適合用來重新繪製特定目錄中或特定延伸模組的所有專案,就像安裝應用程式時一樣。
優先考量匹配的網址 指示索引器優先索引符合指定模式的 URL 項目,而不是完成其他索引工作。

重設索引。 您可以使用呼叫 ISearchCatalogManager::Reset來重設整個索引。 這會透過重建資料庫及對編目範圍中所有 URL 進行完整索引,來重置底層目錄。 此程式可能需要很多時間,而且應該只作為解決可能損毀索引等問題的最後手段。

重要

由於這些方法會使索引速度減慢,因此當您嘗試識別索引或編目問題時,應該謹慎使用它們。 首先,請確定您的搜尋根目錄和範圍規則已新增到 Crawl Scope Manager 中,然後確保檔案和資料夾的 FANCI 位元(檔案屬性設定為未編製內容索引)已正確設置。 如果您已確認這些正確,請先嘗試 ReindexSearchRoot,然後再嘗試 Reindex。 如果這兩項都無法運作,請嘗試重設作為最後手段。

如需相關信息,請參閱 變更索引的通知,以及 使用 ISearchQueryHelper 查詢索引

管理目錄狀態

目錄管理員可用來取得想要自定義目錄管理方式之應用程式的目錄狀態(例如,自定義的「目錄狀態」監視應用程式)。 但大多數與搜尋相關的開發案例通常不需要目錄管理員。 常見的用途是「目錄狀態」監視應用程式或控制面板樣式應用程式。

下表描述用於管理目錄狀態的 ISearchCatalogManager 方法。

方法 描述
URLBeingIndexed 取得目前正在編製索引的 URL。 如果您嘗試識別索引器是否在專案上「停滯」,這個方法會很有用。
項目數量 取得目錄中的項目數。
索引項目數 擷取要編製索引之專案的下列資訊:
  • plIncrementalCount - 下一個累加索引中要編製索引的項目數目
  • plNotificationQueue - 通知佇列中的項目數目。 這項資訊對於檢查索引器是否接收應用程式所傳送之通知所需的通知應用程式很有用。
  • plHighPriorityQueue - 高優先順序佇列中的項目數目。 plHighPriorityQueue 中的項目會優先被編製索引。
GetCatalogStatus 取得目錄的狀態,並傳回提供目前狀態的列舉值。 以下是可能的目錄狀態:
  • 閑置:不需要編製索引。
  • 已暫停:索引已暫停(例如,由於電池不足或 CPU 使用量偏高)。
  • 索引正在復原中。
  • 索引器正在對搜尋範圍進行全範圍索引。
  • 增量爬網:索引器正在進行增量爬網。
  • 處理通知:索引器正在處理通知。
  • 關閉:索引器正在關閉。
get_Name 取得在 ISearchManager::GetCatalog 方法中指定的目前目錄名稱。 目前唯一支持的目錄是 SystemIndex。

管理目錄屬性

您可以使用目錄管理員來管理三個目錄屬性:

  • 對變音符號的敏感度。 變音符號是附加在字母上的符號,表示單字的意義或發音。 這個屬性會決定目錄是否對讀音符號敏感,而且當您或使用者以多種語言搜尋和編製文字索引時,這很重要。 例如,如果此屬性設定為 FALSE,目錄會將 “resume” 和 “resumé” 視為相同的單字。
  • 連線逾時。 這個屬性代表等候伺服器或數據存放區之連線回應的時間量,如 TIMEOUT_INFO 結構所示。 您可以使用這個屬性來微調 Windows 搜尋。
  • 數據逾時 這個屬性代表等候索引器與通訊協定處理程式或篩選之間數據交易的時間量,如 TIMEOUT_INFO 結構所示。 如果這次已過,則會終止來自篩選精靈的程式,以防止死結和其他資源問題。

最後兩個屬性主要是供日後使用。 每個屬性都有 getput 方法。

方法 描述
get_DiacriticSensitivity /
put_DiacriticSensitivity
如果目錄應該區分具有附加符號的字組,則為 TRUE。 FALSE 如果目錄應該忽略變音符號。 變更此屬性需要重建索引,因為索引的索引鍵可能無效。
get_ConnectTimeout /
put_ConnectTimeout
索引器應該等候伺服器或數據存放區連線回應的時間,以秒為單位。 如果許多網站沒有回應,則設定此設定太高可能會導致延遲。 將設定設得太低可能會導致某些網站無法被抓取。
get_DataTimeout /
put_DataTimeout
索引器應該等候數據交易的時間,以秒為單位。

以提升許可權模式執行

更新 SystemIndex 的任何方法呼叫都需要提升許可權執行您的應用程式。 否則,您的應用程式將會失敗,並出現拒絕存取錯誤。

管理索引

用於管理索引的介面

使用搜尋管理員

使用編目範圍管理員