共用方式為


管理搜尋根目錄

編目範圍管理員(CSM)可讓您在 Windows 搜尋的編目範圍中新增和移除您資料存儲的搜尋根目錄。

本主題包含下列主題:

 

關於搜尋根目錄

搜尋根定義Shell命名空間的基底,其中可以包含或排除特定範圍,而且通常是可列舉的通訊協定中最高層級容器。 它不會指定此存放區的哪些部分應該或不應該編製索引;它只會發出內容存放區存在且與已註冊通訊協定處理程式相關聯的訊號。 識別搜尋根 URL 的語法包括通訊協定、存放區或使用者的安全性標識碼、路徑,以及選擇性的特定專案(例如檔案)。 下列範例顯示搜尋根目錄的兩種語法形式。

<protocol>://<store or SID>\<path>\[item]
or
<protocol>://<store or SID>/<path>/[item]

<協定> 區段後面必須接著兩個正斜杠("/"),除非它是 file: 協定,此時則需要三個正斜杠(file:///)。 <網站或 SID> 區段代表內容存放區或使用者安全性識別碼,若搜尋根目錄是為了特定使用者設計的。 <路徑> 區段是一組容器,例如目錄或資料夾,而且可以包含通配符 『*』。 <項目> 區段是選擇性的,也可以包含通配符『*』。 如果您沒有包含專案,請務必使用斜線完成路徑區段,否則索引器會假設最後一個子容器是專案。

例如,假設您已實作通訊協定處理程式 (myPH)來處理自定義應用程式的 *.myext 類型檔案。 所有這些檔案都會位於本機電腦上的 WorkteamA\ProjectFiles 資料夾中。 的搜尋根目錄可能如下所示:

  • myPH:///C:\WorkteamA\ProjectFiles\

假設您打算在索引中包含所有 .myext 檔案,但該容器中沒有任何其他檔案。 這個搜尋根目錄可能如下所示:

  • myPH:///C:\WorkteamA\ProjectFiles\*.myext。

通配符模式會使用通配符 『*』 來定義 URL,並被視為模式而非 URL,但術語通常可互換使用。 例如,file:///C:\ProjectA\*\data\ 會符合下列 URL:

  • C:\ProjectA\version1\data\
  • C:\ProjectA\version2\data\

但該模式不符合此 URL:

  • C:\ProjectA\version1\temp\data\

您應該為尚未位於索引器編目範圍的容器建立新的搜尋根目錄。 如果編目範圍中已經包含路徑 C:\ParentScope,除非您知道先前已排除子範圍,否則您不需要為 C:\ParentScope\ChildScope 新增搜尋根目錄。

設定 Windows 搜尋選項的使用者介面會顯示搜尋根目錄給使用者,讓他們可以精簡搜尋的範圍規則。 在安裝自訂通訊協定處理常式、容器和/或應用程式時,您可以定義一個預設的爬網範圍,其中包含包含和排除規則。 這些規則作為位置呈現給終端使用者。 用戶可以在預先定義的搜尋根目錄內巡覽,並選取想要包含在搜尋中的子目錄,或清除他們想要排除的子目錄。

 

開始之前

在您使用任何抓取範圍管理器 (CSM) 介面之前,必須先執行以下先決步驟:

  1. 建立 CrawlSearchManager 物件,並取得其 ISearchManager 介面。
  2. 呼叫 ISearchManager::GetCatalog,以取得 ISearchCatalogManager 介面的實例,用於 "SystemIndex"。
  3. 呼叫 ISearchCatalogManager::GetCrawlScopeManager,以取得 ISearchCrawlScopeManager 介面的實例。

在對抓取範圍管理器 (CSM) 進行任何變更後,您必須呼叫 ISearchCrawlScopeManager::SaveAll。 此方法不會接受任何參數,並在成功時傳回S_OK。

 

Windows 7:新的爬網範圍管理 API

Windows 7 和更新版本中,ISearchCrawlScopeManager2 擴充 ISearchCrawlScopeManager 介面的功能。 ISearchCrawlScopeManager2::GetVersion 方法會取得編目範圍管理員 (CSM) 版本,這會通知用戶端 CSM 的狀態是否已變更。 ISearchCrawlScopeManager2::GetVersion 不會產生跨進程呼叫。 如果函數成功,則傳回的指標會保持有效,直到用戶端在指標上呼叫 UnmapViewOfFile 並在傳回的句柄上呼叫 CloseHandle

 

將根目錄新增至爬蟲範圍

ISearchCrawlScopeManager 會告訴搜尋引擎哪些容器需要爬取以及/或者監看,並且要將這些容器下的專案包括或排除。 若要新增搜尋根目錄,請將 ISearchRoot 物件具現化、設定根屬性,然後呼叫 ISearchCrawlScopeManager::AddRoot,並將指標傳遞給您的 ISearchRoot 物件。 搜尋根 URL 的格式與先前所述的搜尋根目錄相同。

下表說明 ISearchRoot的相關 put 方法;目前 Windows 搜尋不會使用介面的其他 put 方法。 我們建議在所有根目錄中納入使用者的安全性標識碼 (SID),以提升安全性。 每位使用者的專屬處理程序更加安全,由於查詢在每位使用者的專屬進程中運行,確保使用者無法看到其他使用者收件匣中的索引項目,例如。

方法 描述
提供通知功能 如果通訊協定處理程式或其他應用程式會通知搜尋引擎對搜尋根目錄下URL的變更,請設定為 TRUE。 通知指出 URL 需要重新編製索引。
put_RootURL 設定目前搜尋的根 URL。 URL 會採用稍早所述的搜尋根格式。

 

 

根據預設,當您新增搜尋根目錄時,索引器不會爬取範圍。 您也必須為 root 新增 Include 規則。 如果您想要為應用程式新增使用者特定的根目錄,該應用程式應該在應用程式啟動時為新使用者新增適當的根目錄。

若要為新使用者新增適當的根目錄:

  1. 取得使用者的 SID。
  2. 列舉所有根,以檢查此 SID 是否存在。
  3. 必要時,使用 SID 新增新的根。

 

從抓取範圍移除根URLs

當您不再需要將該 URL 編入索引時,您可以使用 ISearchCrawlScopeManager,將根目錄從爬網範圍中移除。 拿掉根目錄也會刪除該 URL 的所有範圍規則。 例如,假設您想要從系統卸載內容存放區和/或其通訊協定處理程式。 您可以卸載應用程式、移除所有數據,然後從編目範圍中移除搜尋根目錄,而編目範圍管理員將會移除與根目錄相關聯的根和所有範圍規則。

若要移除現有的搜尋根目錄,請使用您想要移除的搜尋根目錄呼叫 ISearchCrawlScopeManager::RemoveRoot。 搜尋根 URL 的格式與先前所述的搜尋根目錄相同。 如果找不到根目錄,則此方法會傳回 S_FALSE;如果在移除已找到的根目錄時發生錯誤,則會傳回錯誤碼。

拿掉搜尋根目錄也會從 Windows 搜尋選項的使用者介面中移除 URL,因此使用者可能無法使用使用者介面重新新增該容器或位置。 您也可以移除所有使用者設定的搜尋根覆寫,並還原至原始的搜尋根和範圍規則。 如需詳細資訊,請參閱 管理範圍規則

注意

在 Windows Vista 中,如果使用者透過控制面板中的使用者設定檔被移除,CSM 會移除其 SID 的所有規則和根目錄,並從目錄中刪除其索引項目。 在 Windows XP 上,您必須手動移除使用者的根和規則。

 

 

列舉爬網範圍中的根目錄

CSM 會使用標準 COM 樣式列舉值介面來列舉搜尋根目錄,IEnumSearchRoots。 您可以使用此介面來列舉搜尋根目錄,以達成不同的目的。 例如,您可能想要在使用者介面中顯示完整的爬網範圍,或探索特定根目錄或根目錄的子系是否已包含在爬網範圍內。

 

參考

ISearchCrawlScopeManager

ISearchRoot

IEnumSearchRoots

概念

使用編目範圍管理員

管理範圍規則