Использование диспетчера каталогов
Интерфейсы ISearchCatalogManager и ISearchCatalogManager2 предоставляют методы для управления каталогом поиска, такие как переиндексация или установка времени ожидания. Хотя поиск Windows в настоящее время использует только один каталог, этот интерфейс был разработан для повышения управления несколькими каталогами независимо. Интерфейс управляет каталогом следующими способами:
- Доступ к другим интерфейсам — получение других интерфейсов, связанных с поиском, которые требуются диспетчеру области обхода, уведомлений об изменении данных и интерфейса ISearchQueryHelper.
- Содержимое каталога — это обеспечение того, чтобы новые данные индексировались, а другие приложения и компоненты работали правильно, путём принудительного повторного индексирования всего или части каталога либо путем сброса всего каталога.
- Свойства каталога — настройка свойств, определяющих, как каталог управляет временем ожидания при подключении к обработчикам протокола и как диакритические знаки обрабатываются в поисках.
- Состояние каталога — получение сведений о каталоге, включая состояние, размер и текущее состояние действия.
Этот раздел организован следующим образом:
- Доступ к связанным интерфейсам
- управление содержимым каталога
- управление состоянием каталога
- управление свойствами каталога
- Работа в режиме повышенных привилегий
- Связанные темы
Доступ к связанным интерфейсам
Для использования некоторых полезных интерфейсов на платформе поиска Windows требуется экземпляр диспетчера каталогов. Чтобы создать диспетчер каталогов для указанного каталога, вызовите метод ISearchManager::GetCatalog. Затем можно использовать методы диспетчера каталогов для создания экземпляров и возврата интерфейсов, основанных на указанном каталоге.
Метод | Описание |
---|---|
GetQueryHelper | Возвращает экземпляр интерфейса ISearchQueryHelper для текущего каталога, чтобы легко создавать запросы. |
GetCrawlScopeManager | Получает экземпляр ISearchCrawlScopeManager для данного каталога поиска, что позволяет разработчикам изменять область обхода индексатора поиска Windows. |
GetItemsChangedSink | Возвращает экземпляр интерфейса ISearchItemsChangedSink, который клиентские приложения используют для уведомления индексатора изменений, когда клиент хочет индексировать сведения о состоянии элемента для поддержки уведомлений, управляемых поставщиком. Дополнительные сведения см. в уведомлении об индексе изменений . |
GetPersistentItemsChangedSink | Возвращает экземпляр ISearchPersistentItemsChangedSink, который клиентские приложения используют для уведомления индексатора об изменениях, когда клиент не хочет индексировать сведения о состоянии (уведомления, управляемые индексатором). Дополнительные сведения см. в уведомлении об индексе изменений . |
Управление содержимым каталога
Существует две основные задачи, связанные с управлением каталогом: переиндексирование всех или некоторых URL-адресов в области обхода индексатора и сброс всего базового каталога. При повторном индексировании старые данные остаются в каталоге до тех пор, пока не будут заменены новыми данными. При сбросе каталога, весь этот каталог перестраивается, и все URL-адреса в области обхода переиндексируются. Этот процесс может занять много времени и должен использоваться только в качестве последнего способа решения таких проблем, как возможно, поврежденный индекс.
При установке нового приложения, обработчика протокола или фильтра приложение установки должно добавить свой каталог или корневой каталог в область обхода, чтобы индексатор содержит расположение данных этого приложения. Если данные не появляются в каталоге после того, как индексатор завершил обход, сначала следует убедиться, что местоположение данных включено в область обхода. Его можно добавить с помощью пользовательского интерфейса для параметров поиска Windows или диспетчера областей обхода. Если расположение, как представляется, находится в области обхода, можно вручную принудительно выполнить переиндексирование всех URL-адресов в области обхода индексатора или подмножества, используя следующие методы интерфейса ISearchCatalogManager.
Метод повторного индексирования | Описание |
---|---|
ISearchCatalogManager::Reindex | Переиндексирует все URL-адреса в каталоге. Старая информация останется до тех пор, пока она не будет заменена новой информацией. |
ISearchCatalogManager::ReindexMatchingURLs ISearchCatalogManager::ReindexSearchRoot |
Переиндексирует URL-адреса, соответствующие шаблону или начинающиеся с определенного корня (например, file:///C:\Foldername\Subfoldername\). Это полезно для повторного сканирования всего содержимого в определенном каталоге или с определенным расширением, например, при установке приложения. |
ПриоритизироватьMatchingURLs | Указывает индексатору определить приоритет элементов индексирования с URL-адресами, которые соответствуют указанному шаблону при выполнении других задач индексирования. |
Сброс индекса. Можно сбросить весь индекс с вызовом ISearchCatalogManager::Reset. Это сбрасывает базовый каталог, путем перестройки баз данных и проводя полную индексацию всех URL в пределах области обхода. Этот процесс может занять много времени и должен использоваться только в качестве последнего способа решения таких проблем, как возможно, поврежденный индекс.
Важный
Из-за замедления индексирования, что эти методы могут вызвать, их следует тщательно использовать при попытке определить проблемы с индексированием или каталогом. Сначала убедитесь, что в диспетчере областей обхода добавлены корни поиска и правила области, а затем убедитесь, что бит FANCI (атрибут файла не индексируется по содержимому) корректно задан для файлов и папок. Если вы подтвердили, что они правильные, сначала попробуйте ReindexSearchRoot, затем Reindex. Если ни один из этих вариантов не работает, попробуйте выполнить сброс как последний способ.
Для получения дополнительной информации см. о уведомлении индекса измененийи о выполнении запроса к индексу с помощью ISearchQueryHelper.
Управление состоянием каталога
Диспетчер каталогов можно использовать для получения состояния каталога для приложений, которые хотят настроить управление каталогом (например, пользовательское приложение мониторинга "Состояние каталога"). Но диспетчер каталогов обычно не требуется для большинства сценариев разработки, связанных с поиском. Обычно используется для приложения мониторинга "Состояние каталога" или приложения на панели управления.
В следующей таблице описаны методы ISearchCatalogManager, используемые для управления состоянием каталога.
Метод | Описание |
---|---|
URLBeingIndexed | Возвращает URL-адрес, который в настоящее время индексируется. Этот метод был бы полезен, если бы вы пытались определить, застрял ли индексатор на элементе. |
КоличествоЭлементов | Возвращает количество элементов в каталоге. |
КоличествоЭлементовДляИндексации | Извлекает следующую информацию об элементах, которые нужно индексировать.
|
GetCatalogStatus | Получает состояние каталога и возвращает значение перечисления, соответствующее текущему состоянию. Ниже приведены возможные состояния каталога:
|
get_Name | Возвращает имя текущего каталога, указанного в методе ISearchManager::GetCatalog. В настоящее время поддерживается только каталог SystemIndex. |
Управление свойствами каталога
Существует три свойства каталога, которые можно управлять с помощью диспетчера каталогов:
- Чувствительность к диакритическим знакам. Диакритические знаки — это знаки акцента, добавленные к буквам для обозначения смысла слова или произношения. Это свойство определяет, чувствителен ли каталог к диакритическим знакам, и это важно при поиске и индексировании текста на нескольких языках пользователями. Например, если для этого свойства задано значение FALSE, каталог будет рассматривать "резюме" и "resumé", как если бы они были одинаковыми словами.
- Время ожидания подключения. Это свойство представляет время ожидания ответа подключения от сервера или хранилища данных, как представлено в структуре TIMEOUT_INFO. Это свойство можно использовать для точной настройки поиска Windows.
- время ожидания данных Это свойство представляет собой количество времени ожидания для транзакции данных между индексатором и обработчиком протокола или фильтром, как представлено в структуре TIMEOUT_INFO. Если это время истекло, процесс демона фильтра завершается, чтобы предотвратить взаимоблокировку и другие проблемы с ресурсами.
Последние два свойства предназначены в первую очередь для дальнейшего использования. Каждый из этих свойств имеет методы get
и put
.
Метод | Описание |
---|---|
get_DiacriticSensitivity / put_DiacriticSensitivity |
Если в каталоге необходимо различать слова с диакритическими знаками, установите TRUE. FALSE если каталог должен игнорировать диакритические знаки. Для изменения этого свойства требуется перестроить индекс, так как ключи индекса могут стать недопустимыми. |
get_ConnectTimeout / put_ConnectTimeout |
Время (в секундах), которое индексатор должен ожидать ответа на подключение от сервера или хранилища данных. Установка этого слишком высокого уровня может привести к задержкам, если многие сайты не отвечают. Установка слишком низкого значения может привести к тому, что некоторые сайты не сканируются. |
get_DataTimeout / put_DataTimeout |
Время( в секундах), которое индексатор должен ожидать транзакции данных. |
Запуск в режиме с повышенными привилегиями
Вызовы любого метода, обновляющего SystemIndex, требуют, чтобы приложение было запущено с повышенными привилегиями. В противном случае приложение завершится ошибкой "Отказано в доступе".
Связанные разделы
Интерфейсы для управления индексом