管理範圍規則
編目範圍管理員 (CSM) 可讓您定義範圍規則,以包含或排除 Windows 搜尋服務編目範圍的 URL。
CSM 可讓您執行下列動作:
- 將新的範圍規則新增至工作規則集
- 移除現有的範圍規則
- 列舉預設範圍規則
- 探索是否包含或排除在編目範圍或具有父或子範圍規則的特定 URL
本主題包含下列主旨:
關於範圍規則
範圍規則是一項規則,其中包含或排除搜尋根目錄中的 URL,使其無法進行編目和編制索引。 包含規則會使索引子在編目範圍中包含該 URL,而排除規則會導致索引子從編目範圍排除該 URL (及其子系) 。
例如,假設您已安裝新的應用程式,其資料檔案位於本機電腦上的 WorkteamA\ProjectFiles 資料夾中。 假設您想要在 ProjectFiles 資料夾中編制索引的所有專案,但子資料夾原型中的專案除外。 在此情況下,您需要包含 myPH:///C:\WorkteamA\ProjectFiles\ 的包含規則,以及 myPH:///C:\WorkteamA\ProjectFiles\Prototypes\的排除規則。
規則有三種類型,優先順序如下:
- 群組原則規則是由系統管理員所設定,而且可以覆寫所有其他規則。
- 使用者規則是由使用者修改 Windows 搜尋選項使用者介面中的範圍所設定。 使用者或其他應用程式可以移除所有使用者規則,並還原為預設規則。
- 預設規則通常是由應用程式設定,以定義預設範圍。 例如,當新的通訊協定處理常式或容器新增至系統時,可能會設定預設規則。
這些規則類型會組成 工作規則集 ,而編目範圍管理員 (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\
開始之前
在使用任何編目範圍管理員介面之前,您必須執行下列必要條件步驟:
- 建立 CSearchManager 物件並取得其 ISearchManager 介面。
- 針對 「SystemIndex」 呼叫 ISearchManager::GetCatalog 以取得 ISearchCatalogManager 介面的實例。
- 呼叫 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 位設定。 您可以用滑鼠右鍵按一下檔案或檔案路徑,然後選取 [ 屬性],然後確定已選取 [ 快速搜尋]、[允許索引服務編制此資料夾索引 ] 核取方塊。 如果檔案或檔案路徑未標示在此編制索引,則即使檔案路徑位於包含規則中,也不會編制索引。
相關主題
-
參考
-
概念