다음을 통해 공유


카탈로그 관리자 사용

ISearchCatalogManagerISearchCatalogManager2 인터페이스는 검색 카탈로그를 관리하는 메서드(예: 다시 인덱싱 또는 시간 제한 설정)를 제공합니다. Windows Search는 현재 하나의 카탈로그만 사용하지만 이 인터페이스는 여러 카탈로그를 독립적으로 관리하는 데 더 큰 제어를 제공하도록 설계되었습니다. 인터페이스는 다음과 같은 방법으로 카탈로그를 관리합니다.

  • 다른 인터페이스에 대한 액세스 - 크롤링 범위 관리자, 데이터 변경 알림 및 ISearchQueryHelper 인터페이스에 필요한 다른 검색 관련 인터페이스를 검색합니다.
  • 카탈로그 콘텐츠 - 카탈로그의 전체 또는 일부를 다시 인덱싱하거나 전체 카탈로그를 다시 설정하여 새 데이터가 인덱싱되고 다른 애플리케이션 및 구성 요소가 제대로 작동하는지 확인합니다.
  • 카탈로그 속성 - 프로토콜 처리기에 연결할 때 카탈로그가 시간 초과를 관리하는 방법과 검색에서 역음성 표시를 처리하는 방법을 결정하는 속성을 설정합니다.
  • 카탈로그 상태 - 상태, 크기 및 현재 활동 상태를 포함하여 카탈로그에 대한 정보를 가져옵니다.

이 항목은 다음과 같이 구성됩니다.

Windows Search 플랫폼의 일부 유용한 인터페이스를 사용하려면 카탈로그 관리자의 instance 필요합니다. 지정된 카탈로그에 대한 카탈로그 관리자를 만들려면 ISearchManager::GetCatalog 메서드를 호출합니다. 그런 다음 카탈로그 관리자의 메서드를 사용하여 지정된 카탈로그를 기반으로 하는 인터페이스를 인스턴스화하고 반환할 수 있습니다.

메서드 설명
GetQueryHelper 쿼리를 쉽게 빌드할 수 있도록 현재 카탈로그에 대한 ISearchQueryHelper 인터페이스의 instance 가져옵니다.
GetCrawlScopeManager 개발자가 Windows Search 인덱서의 크롤링 scope 수정할 수 있도록 이 검색 카탈로그에 대한 ISearchCrawlScopeManager의 instance 가져옵니다.
GetItemsChangedSink 클라이언트가 공급자 관리 알림을 지원하기 위해 항목에 대한 상태 정보를 인덱싱하려고 할 때 클라이언트 애플리케이션이 인덱서에 변경 내용을 알리는 데 사용하는 ISearchItemsChangedSink 인터페이스의 instance 가져옵니다. 자세한 내용은 변경 내용 인덱스 알림을 참조하세요.
GetPersistentItemsChangedSink 클라이언트가 인덱싱 상태 정보(인덱서 관리 알림)를 원하지 않을 때 클라이언트 애플리케이션이 인덱서에 변경 내용을 알리는 데 사용하는 ISearchPersistentItemsChangedSink의 instance 가져옵니다. 자세한 내용은 변경 내용 인덱스 알림을 참조하세요.

카탈로그 콘텐츠 관리

카탈로그 관리에는 인덱서 크롤링 scope URL의 전부 또는 일부를 다시 인덱싱하고 전체 기본 카탈로그를 다시 설정하는 두 가지 주요 작업이 있습니다. URL을 다시 인덱싱할 때 이전 데이터는 새 데이터로 대체될 때까지 또는 그렇지 않은 한 카탈로그에 유지됩니다. 카탈로그를 다시 설정하면 전체 카탈로그가 다시 작성되고 크롤링 scope 모든 URL이 다시 인덱싱됩니다. 이 프로세스는 많은 시간이 걸릴 수 있으며 손상된 인덱스와 같은 문제를 해결하기 위한 최후의 수단으로만 사용해야 합니다.

새 애플리케이션, 프로토콜 처리기 또는 필터를 설치할 때 설치 애플리케이션은 해당 디렉터리 또는 루트를 크롤링 scope 추가하여 인덱서에 해당 애플리케이션 데이터의 위치가 포함되도록 해야 합니다. 인덱서가 크롤링 scope 후 카탈로그에 데이터가 표시되지 않으면 먼저 데이터의 위치가 크롤링 scope 포함되어 있는지 확인해야 합니다. Windows 검색 옵션 또는 크롤링 범위 관리자에 대한 사용자 인터페이스를 사용하여 추가할 수 있습니다. 위치가 크롤링 scope 표시되는 경우 ISearchCatalogManager 인터페이스의 다음 메서드를 사용하여 인덱서의 크롤링 scope 또는 하위 집합에 있는 모든 URL을 수동으로 다시 인덱싱할 수 있습니다.

다시 인덱싱 방법 Description
ISearchCatalogManager::Reindex 카탈로그의 모든 URL을 다시 인덱싱합니다. 이전 정보는 새 정보로 대체될 때까지 유지됩니다.
ISearchCatalogManager::ReindexMatchingURLs
ISearchCatalogManager::ReindexSearchRoot
패턴과 일치하거나 특정 루트에서 시작하는 URL을 다시 인덱싱합니다(예: file:///C:\Foldername\Subfoldername\). 이는 애플리케이션이 설치될 때와 같이 특정 디렉터리 또는 특정 확장의 모든 항목을 다시 크롤링하는 데 유용합니다.
PrioritizeMatchingURLs 인덱서에 다른 인덱싱 작업 완료보다 지정된 패턴과 일치하는 URL을 사용하여 인덱싱 항목의 우선 순위를 지정하도록 지시합니다.

인덱스 다시 설정 ISearchCatalogManager::Reset을 호출하여 전체 인덱스를 다시 설정할 수 있습니다. 이렇게 하면 데이터베이스를 다시 빌드하고 크롤링 scope 모든 URL의 전체 인덱스를 수행하여 기본 카탈로그를 다시 설정합니다. 이 프로세스는 많은 시간이 걸릴 수 있으며 손상된 인덱스와 같은 문제를 해결하기 위한 최후의 수단으로만 사용해야 합니다.

중요

이러한 방법으로 인해 인덱싱이 느려질 수 있으므로 인덱싱 또는 카탈로그 문제를 식별하려고 할 때 신중하게 사용해야 합니다. 먼저 크롤링 범위 관리자에 검색 루트 및 scope 규칙이 추가되었는지 확인한 다음, 파일 및 폴더에 대해 FANCI 비트(파일 특성이 콘텐츠 인덱싱되지 않음)가 올바르게 설정되어 있는지 확인합니다. 이것이 올바른지 확인한 경우 먼저 ReindexSearchRoot를 시도하고 마지막으로 다시 인덱스를 시도합니다. 이 두 가지 모두 작동하지 않으면 최후의 수단으로 다시 설정을 시도합니다.

관련 정보는 변경 내용 인덱스 알림ISearchQueryHelper를 사용하여 인덱스 쿼리를 참조하세요.

카탈로그 상태 관리

카탈로그 관리자를 사용하여 카탈로그 관리 방법(예: 사용자 지정 "카탈로그 상태" 모니터링 애플리케이션)을 사용자 지정하려는 애플리케이션에 대한 카탈로그의 상태 가져올 수 있습니다. 그러나 카탈로그 관리자는 일반적으로 대부분의 검색 관련 개발 시나리오에 필요하지 않습니다. 일반적인 용도는 "카탈로그 상태" 모니터링 애플리케이션 또는 제어판 스타일 애플리케이션입니다.

다음 표에서는 카탈로그 상태 관리하는 데 사용되는 ISearchCatalogManager의 메서드에 대해 설명합니다.

메서드 Description
URLBeingIndexed 현재 인덱싱 중인 URL을 가져옵니다. 이 메서드는 인덱서가 항목에서 "중단"되었는지 여부를 식별하려고 하는 경우에 유용합니다.
NumberOfItems 카탈로그의 항목 수를 가져옵니다.
NumberOfItemsToIndex 인덱싱할 항목에 대한 다음 정보를 검색합니다.
  • plIncrementalCount - 다음 증분 인덱스에서 인덱싱할 항목 수
  • plNotificationQueue - 알림 큐의 항목 수입니다. 이 정보는 인덱서가 애플리케이션이 보내는 알림을 수신하는지 여부를 검사 데 필요한 알림 애플리케이션에 유용합니다.
  • plHighPriorityQueue - 우선 순위가 높은 큐의 항목 수입니다. plHighPriorityQueue의 항목이 먼저 인덱싱됩니다.
GetCatalogStatus 카탈로그의 상태 가져오고 현재 상태 제공하는 열거형 값을 반환합니다. 가능한 카탈로그 상태는 다음과 같습니다.
  • 유휴 상태: 인덱싱이 필요하지 않습니다.
  • 일시 중지됨: 인덱싱이 일시 중지되었습니다(예: 배터리 부족 또는 높은 CPU 사용량으로 인해).
  • 복구 중: 인덱싱이 복구되고 있습니다.
  • 전체 크롤링: 인덱서가 크롤링 scope 전체 크롤링을 수행하고 있습니다.
  • 증분 크롤링: 인덱서가 증분 크롤링을 수행합니다.
  • 알림 처리: 인덱서가 알림을 처리하고 있습니다.
  • 종료: 인덱서가 종료됩니다.
get_Name ISearchManager::GetCatalog 메서드에 지정된 현재 카탈로그의 이름을 가져옵니다. 현재 지원되는 유일한 카탈로그는 SystemIndex입니다.

카탈로그 속성 관리

카탈로그 관리자를 사용하여 관리할 수 있는 세 가지 카탈로그 속성이 있습니다.

  • 분음 부호 감도. 분음 부호는 단어의 의미 또는 발음을 의미하는 문자에 추가된 악센트 기호입니다. 이 속성은 카탈로그가 분음 부호에 중요한지 여부를 결정하며 사용자 또는 사용자가 여러 언어로 텍스트를 검색하고 인덱싱할 때 중요합니다. 예를 들어 이 속성을 FALSE로 설정하면 카탈로그는 "resume" 및 "resumé"를 같은 단어인 것처럼 처리합니다.
  • 연결 시간 제한. 이 속성은 TIMEOUT_INFO 구조에 표시된 대로 서버 또는 데이터 저장소의 연결 응답을 기다리는 시간을 나타냅니다. 이 속성을 사용하여 Windows Search를 미세 조정할 수 있습니다.
  • 데이터 시간 제한 이 속성은 TIMEOUT_INFO 구조에 표시된 대로 인덱서와 프로토콜 처리기 또는 필터 간의 데이터 트랜잭션을 기다리는 시간을 나타냅니다. 이 시간이 경과하면 교착 상태 및 기타 리소스 문제를 방지하기 위해 필터 디먼의 프로세스가 종료됩니다.

마지막 두 속성은 주로 나중에 사용하기 위한 것입니다. 이러한 각 속성에는 및 메서드가 get 있습니다 put .

메서드 Description
get_DiacriticSensitivity /
put_DiacriticSensitivity
TRUE이면 카탈로그가 분음 부호를 사용하여 단어를 구분해야 합니다. 카탈로그에서 분음 부호를 무시해야 하는 경우 FALSE입니다. 인덱스의 키가 잘못될 수 있으므로 이 속성을 변경하려면 인덱스를 다시 작성해야 합니다.
get_ConnectTimeout /
put_ConnectTimeout
인덱서가 서버 또는 데이터 저장소의 연결 응답을 기다려야 하는 시간(초)입니다. 이렇게 너무 높게 설정하면 많은 사이트가 응답하지 않는 경우 지연이 발생할 수 있습니다. 너무 낮게 설정하면 일부 사이트가 크롤링되지 않을 수 있습니다.
get_DataTimeout /
put_DataTimeout
인덱서가 데이터 트랜잭션을 기다려야 하는 시간(초)입니다.

관리자 권한 모드에서 실행

SystemIndex를 업데이트하는 메서드 호출은 애플리케이션을 관리자 권한으로 실행해야 합니다. 그렇지 않으면 액세스 거부 오류로 애플리케이션이 실패합니다.

인덱스 관리

인덱스 관리를 위한 인터페이스

Search Manager 사용

크롤링 범위 관리자 사용