使用目錄管理員

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

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

本主題的組織方式如下:

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

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

管理目錄內容

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

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

重新編制索引方法 Description
ISearchCatalogManager::Reindex 重新編制目錄中所有 URL 的索引。 舊資訊會維持不變,直到由新資訊取代為止。
ISearchCatalogManager::ReindexMatchingURLs
ISearchCatalogManager::ReindexSearchRoot
重新編制符合模式的 URL,或從特定根目錄 (開始,例如,file:///C:\Foldername\Subfoldername\) 。 這適用于重新繪製特定目錄中或具有特定擴充功能的所有專案,就像安裝應用程式一樣。
PrioritizeMatchingURLs 指示索引子以符合指定模式的 URL 來排定索引項目目的優先順序,而非完成其他索引工作。

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

重要

由於這些方法可能造成的編制索引速度變慢,因此當您嘗試識別索引或目錄問題時,應該謹慎使用它們。 首先,請確定已在編目範圍管理員中新增搜尋根目錄和範圍規則,然後確定已正確設定檔案和資料夾的 FANCI 位 ([檔案屬性非內容索引]) 。 如果您確認這些正確無誤,請嘗試先嘗試 ReindexSearchRoot,然後再試一次重新編制索引。 如果這兩個都無法運作,請嘗試重設作為最後的手段。

如需相關資訊,請參閱 通知變更索引和使用 ISearchQueryHelper 查詢索引

管理目錄狀態

目錄管理員可用來取得想要自訂目錄管理方式的應用程式目錄狀態 (,例如自訂「類別目錄狀態」監視應用程式) 。 但大部分的搜尋相關開發案例通常不需要目錄管理員。 常見的用途是「目錄狀態」監視應用程式或主控台樣式的應用程式。

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

方法 Description
URLBeingIndexed 取得目前正在編制索引的 URL。 如果您嘗試識別索引子是否在專案上「停滯」,這個方法會很有用。
NumberOfItems 取得目錄中的專案數。
NumberOfItemsToIndex 擷取要編制索引之專案的下列資訊:
  • plIncrementalCount - 下一個累加式索引中要編制索引的專案數
  • plNotificationQueue - 通知佇列中的專案數目。 這項資訊對於檢查索引子是否接收應用程式所傳送通知所需的通知應用程式很有用。
  • plHighPriorityQueue - 高優先順序佇列中的專案數目。 plHighPriorityQueue 中的專案會先編制索引。
GetCatalogStatus 取得目錄的狀態,並傳回提供目前狀態的列舉值。 以下是可能的目錄狀態:
  • 閒置:不需要編制索引。
  • 已暫停:索引會因為低電池或高 CPU 使用量而暫停 (,例如) 。
  • 復原:正在復原索引。
  • 完整編目:索引子正在執行編目範圍的完整編目。
  • 累加編目:索引子正在執行累加編目。
  • 處理通知:索引子正在處理通知。
  • 關閉:索引子正在關閉。
get_Name 取得 ISearchManager::GetCatalog 方法中指定的目前目錄名稱。 目前唯一支援的目錄是 SystemIndex。

管理目錄屬性

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

  • 變音符號敏感度。 讀音符號是新增至字母的輔色,以表示單字的意義或發音。 此屬性會決定目錄是否敏感于讀音符號,而且當您或您的使用者搜尋及編制多種語言的文字索引時很重要。 例如,當此屬性設定為 FALSE時,目錄會將 「resume」 和 「resumé」 視為相同的字。
  • 連線逾時。 這個屬性代表等候伺服器或資料存放區之連線回應的時間量,如 TIMEOUT_INFO 結構所示。 您可以使用此屬性來微調 Windows 搜尋。
  • 資料逾時 這個屬性代表在索引子和通訊協定處理常式或篩選之間等候資料交易的時間量,如 TIMEOUT_INFO 結構中所表示。 如果經過這個時間,篩選背景程式的進程就會終止,以防止死結和其他資源問題。

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

方法 Description
get_DiacriticSensitivity /
put_DiacriticSensitivity
如果目錄應該區分具有讀音符號的字組,則為 TRUE。 如果 目錄應該忽略讀音符號,則為 FALSE。 變更這個屬性需要重建索引,因為索引的索引鍵可能會變成無效。
get_ConnectTimeout /
put_ConnectTimeout
索引子應該等候伺服器或資料存放區連線回應的時間,以秒為單位。 如果許多網站沒有回應,設定此設定可能會造成延遲。 設定太低可能會導致某些網站無法編目。
get_DataTimeout /
put_DataTimeout
索引子應該等候資料交易的時間,以秒為單位。

在提升許可權模式中執行

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

管理索引

管理索引的介面

使用搜尋管理員

使用編目範圍管理員