카탈로그 관리자 사용
ISearchCatalogManager 및 ISearchCatalogManager2 인터페이스는 검색 카탈로그를 관리하는 메서드(예: 다시 인덱싱 또는 시간 제한 설정)를 제공합니다. 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 | 인덱싱할 항목에 대한 다음 정보를 검색합니다.
|
GetCatalogStatus | 카탈로그의 상태 가져오고 현재 상태 제공하는 열거형 값을 반환합니다. 가능한 카탈로그 상태는 다음과 같습니다.
|
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를 업데이트하는 메서드 호출은 애플리케이션을 관리자 권한으로 실행해야 합니다. 그렇지 않으면 액세스 거부 오류로 애플리케이션이 실패합니다.