검색 루트 관리

CSM(크롤링 범위 관리자)을 사용하면 Windows Search 크롤링 범위에서 데이터 저장소에 대한 검색 루트를 추가하고 제거할 수 있습니다.

이 항목에는 다음 주제가 포함되어 있습니다.

 

검색 루트 정보

검색 루트는 특정 범위를 포함하거나 제외할 수 있는 셸 네임스페이스의 기반을 정의하며, 일반적으로 열거할 수 있는 프로토콜에서 가장 높은 수준의 컨테이너입니다. 이 저장소에서 인덱싱해야 하거나 인덱싱해서는 안 되는 부분을 지정하지 않습니다. 콘텐츠 저장소가 존재하고 등록된 프로토콜 처리기와 연결되어 있음을 알리는 신호일 뿐입니다. 검색 루트 URL을 식별하는 구문에는 프로토콜, 저장소 또는 사용자의 보안 식별자, 경로 및 선택적으로 특정 항목(예: 파일)이 포함됩니다. 다음 예제에서는 검색 루트에 대한 구문의 두 가지 형태를 보여 줍니다.

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

<프로토콜> 세그먼트 뒤에는 두 개의(2) 슬래시('/')가 와야 합니다. 다만, file: 프로토콜인 경우에는 3개의 슬래시(file:///)가 필요합니다. <사이트 또는 SID> 세그먼트는 검색 루트가 사용자와 관련이 있는 경우 콘텐츠 저장소 또는 사용자 보안 식별자를 나타냅니다. <경로> 세그먼트는 디렉터리 또는 폴더와 같은 컨테이너 집합이며 와일드카드 문자 '*'를 포함할 수 있습니다. <항목> 세그먼트는 선택 사항이며 와일드카드 문자 '*'도 포함할 수 있습니다. 항목을 포함하지 않는 경우 슬래시로 경로 세그먼트를 완료해야 합니다. 또는 인덱서는 마지막 하위 컨테이너가 항목이라고 가정합니다.

예를 들어 사용자 지정 애플리케이션에 대해 *.myext 형식의 파일을 처리하기 위해 myPH(프로토콜 처리기)를 구현했다고 가정합니다. 이러한 파일은 모두 로컬 컴퓨터의 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 Search 옵션을 설정하기 위한 사용자 인터페이스는 검색에 대한 범위 규칙을 구체화할 수 있도록 사용자에게 검색 루트를 표시합니다. 사용자 지정 프로토콜 처리기, 컨테이너 및/또는 애플리케이션에 대한 설치 프로세스의 일부로 포함 및 제외 규칙을 사용하여 기본 크롤링 범위를 정의할 수 있습니다. 이러한 규칙은 최종 사용자에게 위치로 제공됩니다. 사용자는 미리 정의된 검색 루트의 하위 디렉터리 내에서 탐색하고 검색에 포함할 항목을 선택하거나 제외하려는 항목을 지울 수 있습니다.

 

시작하기 전 주의 사항:

CSM (크롤링 범위 관리자) 인터페이스를 사용할 수 있기 전에, 먼저 다음 사전 필수 단계를 수행해야 합니다.

  1. CrawlSearchManager 개체를 만들고 해당 ISearchManager 인터페이스를 가져옵니다.
  2. "SystemIndex"에 대해 ISearchManager::GetCatalog 호출하여 ISearchCatalogManager 인터페이스의 인스턴스를 가져옵니다.
  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 메서드에 대해 설명합니다. 인터페이스의 다른 put 메서드는 현재 Windows Search에서 사용되지 않습니다. 보안을 향상하기 위해 모든 루트에 사용자의 SID(보안 식별자)를 포함하는 것이 좋습니다. 사용자별 프로세스에서 쿼리가 실행되어 한 사용자가 다른 사용자의 받은 편지함에서 인덱싱된 항목을 볼 수 없도록 하므로 사용자별 루트는 더 안전합니다.

메서드 묘사
알림제공설정 프로토콜 처리기 또는 다른 애플리케이션이 검색 루트 아래의 URL 변경 내용을 검색 엔진에 알리는 경우 TRUE 설정합니다. 알림은 URL에 다시 인덱싱이 필요하다는 것을 나타냅니다.
put_RootURL 현재 검색의 루트 URL을 설정합니다. URL은 앞에서 설명한 검색 루트 양식을 사용합니다.

 

 

기본적으로 인덱서는 검색 루트를 추가할 때 범위를 크롤링하지 않습니다. 루트에 대한 포함 규칙도 추가해야 합니다. 애플리케이션에 대한 사용자별 루트를 추가하려면 애플리케이션이 시작될 때 해당 애플리케이션이 새 사용자에게 적절한 루트를 추가해야 합니다.

새 사용자에게 적절한 루트를 추가하려면 다음을 수행합니다.

  1. 사용자의 SID를 가져옵니다.
  2. 모든 루트를 열거하여 이 SID에 대한 루트가 있는지 확인합니다.
  3. 필요한 경우 SID를 사용하여 새 루트를 추가합니다.

 

크롤링 범위에서 루트 제거

해당 URL을 더 이상 인덱싱하지 않으려면 ISearchCrawlScopeManager 사용하여 크롤링 범위에서 루트를 제거할 수 있습니다. 루트를 제거하면 해당 URL에 대한 모든 범위 규칙도 삭제됩니다. 예를 들어 시스템에서 콘텐츠 저장소 및/또는 해당 프로토콜 처리기를 제거하려는 경우를 가정해 보겠습니다. 애플리케이션을 제거하고 모든 데이터를 제거한 다음 크롤링 범위에서 검색 루트를 제거할 수 있으며 크롤링 범위 관리자는 루트 및 루트와 연결된 모든 범위 규칙을 제거합니다.

기존 검색 루트를 제거하려면 제거하려는 검색 루트를 사용하여 ISearchCrawlScopeManager::RemoveRoot 호출합니다. 검색 루트 URL은 앞에서 설명한 검색 루트와 동일한 형식을 사용합니다. 이 메서드는 루트를 찾을 수 없는 경우 S_FALSE 반환하고, 발견된 루트를 제거하는 동안 오류가 발생한 경우 오류 코드를 반환합니다.

또한 검색 루트를 제거하면 Windows Search 옵션의 사용자 인터페이스에서 URL이 제거되므로 사용자가 사용자 인터페이스를 사용하여 해당 컨테이너 또는 위치를 다시 추가할 수 없습니다. 검색 루트의 모든 사용자 집합 재정의를 제거하고 원래 검색 루트 및 범위 규칙으로 되돌릴 수도 있습니다. 자세한 내용은 범위 규칙 관리 참조하세요.

메모

Windows Vista에서 사용자가 제어판의 사용자 프로필을 통해 제거된 경우 CSM은 SID가 있는 모든 규칙과 루트를 제거하고 카탈로그에서 인덱싱된 항목을 제거합니다. Windows XP에서는 사용자의 루트 및 규칙을 수동으로 제거해야 합니다.

 

 

크롤링 범위의 루트 열거

CSM은 표준 COM 스타일 열거자 인터페이스 IEnumSearchRoots사용하여 검색 루트를 열거합니다. 이 인터페이스를 사용하여 다양한 용도로 검색 루트를 열거할 수 있습니다. 예를 들어 전체 크롤링 범위를 사용자 인터페이스에 표시하거나 특정 루트 또는 루트의 자식이 크롤링 범위에 이미 있는지 검색할 수 있습니다.

 

참조

ISearchCrawlScopeManager

ISearchRoot

IEnumSearchRoots

개념

크롤링 범위 관리자 사용

범위 규칙 관리하기