管理範圍規則

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

CSM 可讓您執行下列動作:

  • 將新的範圍規則新增至工作規則集
  • 拿掉現有的範圍規則
  • 列舉預設範圍規則
  • 探索特定 URL 是否被包含或排除在抓取範圍中,或是否具有父範圍或子範圍規則。

 

本主題包含下列主題:

關於範圍規則

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

例如,假設您已安裝新的應用程式,其數據檔位於本機計算機上的 WorkteamA\ProjectFiles 資料夾中。 假設您希望為 ProjectFiles 資料夾中的所有項目編制索引,但不包括子資料夾 Prototypes 中的項目。 在此情況下,您需要 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\

 

開始之前

在使用任何 Crawl Scope Manager 介面之前,您必須先執行下列必要步驟:

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

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

 

新增範圍規則

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

  • 系統管理員所實作的組策略(這些原則不會使用 ISearchCrawlScopeManager 介面。
  • 安裝或更新應用程式,例如 Windows 搜尋或通訊協定處理程式
  • 新增資料存放區或容器的設定應用程式

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

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

方法 描述
AddUserScopeRule 新增一個 URL 規則,根據使用者指定。 這些規則會覆寫默認規則。 如果您已實作使用者介面,讓使用者管理自己的範圍規則和URL,請使用此方法。
AddDefaultScopeRule 如通訊協定處理程式等其他應用程式所指定,為 URL 新增規則。 當您實作新的通訊協定處理程式或新增資料存放區時,請使用此方法。 這些規則可由用戶規則覆寫。

 

每個方法都會採用可編索引的位置 URL,以及判斷該 URL 是否應包含或排除的標誌。 fFollowFlags 參數會保留供日後使用。 當您新增範圍規則且編目範圍管理員判斷該規則已經存在時(根據提供的 URL 或模式),將更新工作規則集,以使 (1) 舊的規則被新的規則取代,(2) 移除任何與其相矛盾的用戶規則。

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

使用者規則注意事項

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

設定標誌 fOverrideChildren 會產生如下效果於工作規則集中:

  • TRUE 會導致從工作規則集移除所有子規則(使用者規則和默認規則)。
  • FALSE 會導致所有隸屬於新使用者規則的默認規則重新添加到工作規則集中。 如果子默認規則是包含,而新的用戶規則是排除規則,默認規則會變更為包含用戶規則。

 

移除範圍規則

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

方法 描述
移除範圍規則 從工作規則集移除指定 URL 的用戶規則。 如果使用者規則重複於或覆寫預設規則,預設規則仍會保留在工作規則集中。
RemoveDefaultScopeRule 從工作規則集和預設規則集移除指定 URL 的預設規則。 呼叫此方法之後,您無法使用 RevertToDefaultScopes 還原為此默認規則。

 

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

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

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

注意

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

 

 

還原為預設規則

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

 

列舉範圍規則

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

 

追蹤範圍規則

CSM 也可讓您判斷編目範圍中是否包含指定的 URL,以及它是否有父系或子範圍規則。 您也可以瞭解為何某個 URL 會被包含在爬網範圍內或被排除在爬網範圍外。 這些方法不適用於模式 URL。

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

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

 

 

注意

IncludedInCrawlScopeIncludedInCrawlScopeEx 方法會判斷 URL 是否僅根據 CSM 中的規則被爬取。 可能會有其他原因導致 URL 無法編目,例如 FANCI 位已設定(也就是說,使用者在資料夾的 [屬性] 對話框中不允許快速索引)。

 

如果您認為某個檔案路徑應該被排除,但它卻被列為包含,請確認排除規則的結尾為 “<路徑>\*”。 如果您認為某個檔案或檔案路徑應該被包含,但實際上沒有被包含,請務必檢查該檔案或路徑的 FANCI 位設定。 您可以在檔案或檔案路徑上按下滑鼠右鍵,然後選取 [屬性],然後確保勾選 [為快速搜尋,允許索引服務編製此文件夾的索引] 的複選框。 如果檔案或檔案路徑未在此標示為編製索引,即使它位於包含規則中,也不會編製索引。

參考

ISearchCrawlScopeManager

ISearchCrawlScopeManager2

ISearchScopeRule

IEnumSearchScopeRules

概念

管理搜尋根