管理範圍規則

編目範圍管理員 (CSM) 可讓您定義範圍規則,以包含或排除 Windows 搜尋服務編目範圍的 URL。

CSM 可讓您執行下列動作:

  • 將新的範圍規則新增至工作規則集
  • 移除現有的範圍規則
  • 列舉預設範圍規則
  • 探索是否包含或排除在編目範圍或具有父或子範圍規則的特定 URL

 

本主題包含下列主旨:

關於範圍規則

範圍規則是一項規則,其中包含或排除搜尋根目錄中的 URL,使其無法進行編目和編制索引。 包含規則會使索引子在編目範圍中包含該 URL,而排除規則會導致索引子從編目範圍排除該 URL (及其子系) 。

例如,假設您已安裝新的應用程式,其資料檔案位於本機電腦上的 WorkteamA\ProjectFiles 資料夾中。 假設您想要在 ProjectFiles 資料夾中編制索引的所有專案,但子資料夾原型中的專案除外。 在此情況下,您需要包含 myPH:///C:\WorkteamA\ProjectFiles\ 的包含規則,以及 myPH:///C:\WorkteamA\ProjectFiles\Prototypes\的排除規則。

規則有三種類型,優先順序如下:

  1. 群組原則規則是由系統管理員所設定,而且可以覆寫所有其他規則。
  2. 使用者規則是由使用者修改 Windows 搜尋選項使用者介面中的範圍所設定。 使用者或其他應用程式可以移除所有使用者規則,並還原為預設規則。
  3. 預設規則通常是由應用程式設定,以定義預設範圍。 例如,當新的通訊協定處理常式或容器新增至系統時,可能會設定預設規則。

這些規則類型會組成 工作規則集 ,而編目範圍管理員 (CSM) 會產生要編目之 URL 的完整清單。 雖然預設規則可由群組原則規則和使用者規則覆寫,但它們會保留在自己的預設規則集中,您可以隨時還原為 。 索引子會從工作規則集編目 URL,並將專案、屬性和內容新增至目錄。

注意

具有主控台存取權的使用者可以透過該介面修改規則。 因此,提供範圍管理的應用程式應該一律使用列舉方法直接從 CSM 取得規則,而不是依賴已儲存的使用者規則複本。

 

排除規則可以使用萬用字元 '*' 來定義模式 URL;例如:file:///C:\ProjectA\*\。 使用此模式的排除規則可防止索引子編目 ProjectA 目錄下的任何資料夾。 如需更複雜的範例,假設包含規則適用于 file:///C:\ProjectA\ 和 file:///C:\ProjectA\*\data\*的排除模式規則。 在此情況下,索引子會在下列專案中編目專案:

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

但是索引子不會編目下列專案:

  • C:\ProjectA\version1\data\

 

開始之前

在使用任何編目範圍管理員介面之前,您必須執行下列必要條件步驟:

  1. 建立 CSearchManager 物件並取得其 ISearchManager 介面。
  2. 針對 「SystemIndex」 呼叫 ISearchManager::GetCatalog 以取得 ISearchCatalogManager 介面的實例。
  3. 呼叫 ISearchCatalogManager::GetCrawlScopeManager 以取得 ISearchCrawlScopeManager 介面的實例。

對編目範圍管理員進行任何變更之後,您必須呼叫 ISearchCrawlScopeManager::SaveAll 方法。 此方法不會接受任何參數,並在成功時傳回S_OK。

 

新增範圍規則

CSM 的工作規則集包括使用者和預設規則,以及群組原則強制的任何規則。 使用者規則是由使用者介面中的使用者所設定,而預設規則可由下列任一項設定:

  • 系統管理員實作的群組原則 (這些原則不會使用 ISearchCrawlScopeManager interface.)
  • Windows 搜尋或通訊協定處理常式等應用程式的安裝或更新
  • 新增新資料存放區或容器的設定應用程式

ISearchCrawlScopeManager提供兩種方法來新增範圍規則,如下表所述。 檔案系統包含規則的路徑必須以反斜線 '\' (結尾,例如,file:///C:\files\) ,而排除規則的路徑必須以星號結尾 (例如,file:///c:\files\*) 。 只有排除規則可以包含模式 URL。 此外,我們建議在路徑中包含使用者的安全性識別碼 (SID) ,以提高安全性。 個別使用者路徑更安全,因為查詢接著會在每個使用者程式中執行,以確保一位使用者看不到從其他使用者收件匣編制索引的專案,例如。

下表描述用來新增範圍規則的 ISearchCrawlScopeManager 介面方法。

方法 Description
AddUserScopeRule 新增 URL 的規則,如使用者所指定。 這些規則會覆寫預設規則。 如果您已實作讓使用者管理自己的範圍規則和 URL 的使用者介面,請使用這個方法。
AddDefaultScopeRule 新增 URL 的規則,如另一個應用程式所指定,例如通訊協定處理常式。 當您實作新的通訊協定處理常式或新增新的資料存放區時,請使用這個方法。 這些規則可由使用者規則覆寫。

 

每個方法都會採用 URL 至可編制索引的位置和旗標,以判斷 URL 是否應該包含或排除。 fFollowFlags參數保留供日後使用。 當您新增範圍規則並編目範圍管理員會根據 URL 或) 提供的模式來判斷規則已經存在 (時,工作規則集會更新,讓 (1) 新規則取代舊規則,並 (2) 移除任何與規則衝突的使用者規則。

提示: 雖然 file:// 根目錄預設包含在編目範圍中,但預設不會編制程式檔索引。 因此,儲存至其 Program Files 目錄之資料的應用程式需要將其位置新增為預設規則。

使用者規則注意事項

如果新的使用者規則與現有的預設規則相同,新的使用者規則會覆寫工作規則集中的預設規則。 如果新的使用者規則與現有的使用者規則相同,則會取代舊的使用者規則。

設定旗標 fOverrideChildren 在工作規則集中有下列結果:

  • TRUE 會導致從工作規則集移除所有子規則, (使用者規則和預設規則) 。
  • FALSE 會導致重新新增至工作規則,以設定新使用者規則子系的所有預設規則。 如果子預設規則是包含專案,而新的使用者規則是排除規則,則預設規則會變更為包含使用者規則。

 

移除範圍規則

您可以使用 ISearchCrawlScopeManager 介面,從工作規則集中移除範圍規則。 此介面提供下列兩種方法來移除範圍規則。

方法 Description
RemoveScopeRule 從工作規則集中移除指定 URL 的使用者規則。 如果使用者規則是或覆寫預設規則的複本,則預設規則會保留在工作規則集中。
RemoveDefaultScopeRule 從工作規則集和預設規則集移除指定 URL 的預設規則。 呼叫此方法之後,您無法使用 RevertToDefaultScopes 還原為此預設規則。

 

每個方法都會採用 URL 和旗標,指出要移除的規則是否為包含或排除規則。 如果找不到具有該 URL 且包含/排除旗標的規則,則這些方法會傳回錯誤。

提示: 如果您想要完全從編目範圍中移除範圍,請使用 RemoveRoot 方法,以移除搜尋根目錄和所有相關聯的範圍規則。 例如,卸載時執行這項操作會被視為最佳做法。

您也可以移除搜尋根目錄的所有使用者集合覆寫,並還原為原始搜尋根和預設範圍規則。 如需詳細資訊,請參閱下一節。

注意

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

 

 

還原為預設規則

還原為預設規則會移除 URL 或根目錄的所有使用者規則,並將所有預設規則還原至工作規則集。 不過,它不會移除群組原則所設定的規則。 RevertToDefaultScopes方法不會接受任何參數,如果無法還原為預設規則,則會傳回錯誤碼。

 

列舉範圍規則

CSM 會使用標準 COM 樣式列舉值介面 IEnumSearchScopeRules 來列舉範圍規則。 您可以使用這個介面來列舉範圍規則以用於數個用途。 例如,您可能會想要在使用者介面中顯示整個工作規則集,或探索規則的規則或子系是否已經在編目範圍中。

 

追蹤範圍規則

CSM 也可讓您判斷編目範圍中包含指定的 URL,以及它是否有父或子範圍規則。 您也可以瞭解為何在編目範圍中包含或排除 URL。 這些方法不適合與模式 URL 搭配使用。

下表描述用於新增範圍規則的 ISearchCrawlScopeManager 方法。

方法 Description
GetParentScopeVersionId 取得父包含 URL 的版本識別碼。 您可以使用這個方法來查看父範圍自上次檢查後是否已變更。
範例:如果郵件應用程式使用提供者管理的通知,它可能會在關閉之前取得父範圍版本,並在開啟時再次檢查版本。 然後,應用程式可以判斷是否需要將一組新的通知推送至索引子。
HasChildScopeRule 如果指定的 URL 具有子規則 (套用至其 URL 階層內任何層級之子系的規則,則傳回 TRUE) 。
範例:如果 URL 是 file:///C:\Folder\,則如果 CSM 有特別針對 file:///C:\Folder\Subfolder\的範圍規則,這個方法會傳回 TRUE
HasParentScopeRule 如果指定的 URL 具有父規則, (URL 階層中任何層級套用至父系的規則,則傳回 TRUE) 。
範例:如果 URL 是 file:///C:\Folder\Subfolder,則如果 CSM 具有特別適用于 file:///C:\Folder\的範圍規則,則此方法會傳回 TRUE
IncludedInCrawlScope 如果編目範圍中包含指定的 URL,則傳回 TRUE
IncludedInCrawlScopeEx CLUSION_REASON 列舉傳回值,說明 URL 在編目範圍中包含或排除的原因 ,如果 URL 包含在編目範圍中,則會擷取 TRUE 值。 此方法可協助您識別工作規則集中的衝突。

 

 

注意

IncludedInCrawlScope 和 IncludedInCrawlScopeEx方法會根據 CSM 中的規則,判斷 URL 是否只會進行編目。 可能有其他原因導致 URL 未編目,例如正在設定 (的 FANCI 位,也就是使用者不允許在資料夾的 [屬性] 對話方塊中快速編制索引。)

 

如果您認為應該排除檔案路徑,但已列為包含,請確定排除規則以 「 < path > \*」 結尾。 如果您認為應該包含檔案或檔案路徑,但不是,請務必檢查檔案或路徑的 FANCI 位設定。 您可以用滑鼠右鍵按一下檔案或檔案路徑,然後選取 [ 屬性],然後確定已選取 [ 快速搜尋]、[允許索引服務編制此資料夾索引 ] 核取方塊。 如果檔案或檔案路徑未標示在此編制索引,則即使檔案路徑位於包含規則中,也不會編制索引。

參考

ISearchCrawlScopeManager

ISearchCrawlScopeManager2

ISearchScopeRule

IEnumSearchScopeRules

概念

管理搜尋根目錄