Поделиться через


Использование диспетчера каталогов

Интерфейсы ISearchCatalogManager и ISearchCatalogManager2 предоставляют методы для управления каталогом поиска, например для повторного индексирования или установки времени ожидания. Хотя в windows Search в настоящее время используется только один каталог, этот интерфейс был разработан, чтобы предоставить вам больший контроль над управлением несколькими каталогами независимо друг от друга. Интерфейс управляет каталогом следующими способами:

  • Доступ к другим интерфейсам — получение других интерфейсов, связанных с поиском, необходимых для диспетчера области обхода контента, уведомлений об изменении данных и интерфейса ISearchQueryHelper .
  • Содержимое каталога— обеспечение индексирования новых данных и правильной работы других приложений и компонентов путем принудительного переиндексирования всего или его части или путем сброса всего каталога.
  • Свойства каталога — задание свойств, определяющих, как каталог управляет временем ожидания при подключении к обработчикам протокола и как диакритические метки обрабатываются при поиске.
  • Состояние каталога — получение сведений о каталоге, включая состояние, размер и текущее состояние действия.

Этот раздел организован следующим образом:

Для использования некоторых полезных интерфейсов на платформе Windows Search требуется экземпляр диспетчера каталогов. Чтобы создать диспетчер каталога для указанного каталога, вызовите метод ISearchManager::GetCatalog . Затем методы диспетчера каталогов можно использовать для создания экземпляров и возврата интерфейсов, основанных на указанном каталоге.

Метод Описание
GetQueryHelper Возвращает экземпляр интерфейса ISearchQueryHelper для текущего каталога, что позволяет легко создавать запросы.
GetCrawlScopeManager Получает экземпляр ISearchCrawlScopeManager для этого каталога поиска, чтобы разработчики могли изменять область обхода индексатора Windows Search.
GetItemsChangedSink Получает экземпляр интерфейса ISearchItemsChangedSink , который клиентские приложения используют для уведомления индексатора об изменениях, когда клиент хочет, чтобы сведения о состоянии индексирования элемента поддерживали уведомления, управляемые поставщиком. Дополнительные сведения см . в разделе Уведомление об индексе изменений .
GetPersistentItemsChangedSink Возвращает экземпляр ISearchPersistentItemsChangedSink, который клиентские приложения используют для уведомления индексатора об изменениях, когда клиенту не нужны сведения о состоянии индексирования (уведомления, управляемые индексатором). Дополнительные сведения см . в разделе Уведомление об индексе изменений .

Управление содержимым каталога

Управление каталогом связано с двумя основными задачами: переиндексирование всех или некоторых URL-адресов в область обхода индексатора и сброс всего базового каталога. При повторном индексировании URL-адресов старые данные остаются в каталоге до тех пор, пока они не будут заменены новыми данными. При сбросе каталога весь каталог перестраивается и все URL-адреса в область обхода индексируются повторно. Этот процесс может занять много времени и должен использоваться только в качестве крайнего средства для решения таких проблем, как возможно поврежденный индекс.

При установке нового приложения, обработчика протокола или фильтра приложение установки должно добавить свой каталог или корневой каталог в область обхода, чтобы убедиться, что индексатор включает расположение данных этого приложения. Если данные не отображаются в каталоге после обхода индексатором область обхода контента, необходимо сначала убедиться, что расположение данных включено в область обхода контента. Его можно добавить с помощью пользовательского интерфейса для параметров Поиска Windows или диспетчера области обхода контента. Если расположение отображается в область обхода контента, можно вручную принудительно выполнить переиндексирование всех URL-адресов в область обхода индексатора или подмножестве, используя следующие методы интерфейса ISearchCatalogManager.

Метод повторного индексирования Описание
ISearchCatalogManager::Reindex Переиндексирует все URL-адреса в каталоге. Старая информация будет оставаться до тех пор, пока не будет заменена новой информацией.
ISearchCatalogManager::ReindexMatchingURLs
ISearchCatalogManager::ReindexSearchRoot
Переиндексирует URL-адреса, которые соответствуют шаблону или начинаются с определенного корня (например, file:///C:\Foldername\Subfoldername\). Это полезно для повторного создания всего содержимого в определенном каталоге или с определенным расширением, как при установке приложения.
PrioritizeMatchingURLs Указывает индексатору приоритизировать элементы индексирования с URL-адресами, которые соответствуют указанному шаблону, а не выполнять другие задачи индексирования.

Сброс индекса. Вы можете сбросить весь индекс с помощью вызова ISearchCatalogManager::Reset. Это сбрасывает базовый каталог путем перестроения баз данных и выполнения полного индекса всех URL-адресов в область обхода контента. Этот процесс может занять много времени и должен использоваться только в качестве крайнего средства для решения таких проблем, как возможно поврежденный индекс.

Важно!

Из-за замедления индексирования, которое может вызвать эти методы, их следует использовать с осторожностью при попытке выявить проблемы с индексированием или каталогом. Сначала убедитесь, что корень поиска и правила область добавлены в диспетчере области обхода контента, а затем убедитесь, что бит FANCI (атрибут файла не индексирован) правильно задан для файлов и папок. Если вы подтвердили, что это правильно, сначала попробуйте ReindexSearchRoot и Переиндексировать последний. Если ни то из этих действий не сработает, попробуйте выполнить сброс в качестве последнего средства.

Дополнительные сведения см. в разделах Уведомление индекса изменений и Запрос индекса с помощью ISearchQueryHelper.

Управление состоянием каталога

Диспетчер каталогов можно использовать для получения состояния каталога для приложений, которые хотят настроить способ управления каталогом (например, пользовательское приложение мониторинга "Состояние каталога"). Но диспетчер каталогов обычно не требуется для большинства сценариев разработки, связанных с поиском. Обычно используется приложение мониторинга "Состояние каталога" или приложение в стиле панель управления.

В следующей таблице описаны методы ISearchCatalogManager, используемые для управления состоянием каталога.

Метод Описание
URLBeingIndexed Возвращает URL-адрес, который в настоящее время индексируется. Этот метод будет полезен, если вы пытаетесь определить, завис индексатор на элементе.
NumberOfItems Возвращает количество элементов в каталоге.
NumberOfItemsToIndex Извлекает следующие сведения об индексированных элементах:
  • plIncrementalCount — количество элементов, индексированных в следующем добавочном индексе.
  • plNotificationQueue — количество элементов в очереди уведомлений. Эта информация будет полезна приложению уведомлений, которое должно проверка, получает ли индексатор уведомления, отправляемые приложением.
  • plHighPriorityQueue — количество элементов в очереди с высоким приоритетом. Элементы в plHighPriorityQueue индексируются первыми.
GetCatalogStatus Возвращает состояние каталога и возвращает значение перечисления, указывающее текущее состояние. Ниже приведены возможные состояния каталога.
  • Бездействует: индексирование не требуется.
  • Приостановлено. Индексирование приостановлено (например, из-за низкого уровня заряда или высокой загрузки ЦП).
  • Восстановление. Индексирование выполняется.
  • Полный обход контента. Индексатор выполняет полный обход область обхода контента.
  • Добавочный обход контента. Индексатор выполняет добавочный обход контента.
  • Обработка уведомлений. Индексатор обрабатывает уведомления.
  • Завершение работы: индексатор завершает работу.
get_Name Возвращает имя текущего каталога, указанного в методе ISearchManager::GetCatalog . В настоящее время поддерживается только каталог SystemIndex.

Управление свойствами каталога

С помощью диспетчера каталогов можно управлять тремя свойствами каталога:

  • Диакритическая чувствительность. Диакритические знаки — это знаки, добавляемые к буквам для обозначения значения или произношения слова. Это свойство определяет, является ли каталог чувствительным к диакритикам, и важно, когда вы или ваши пользователи ищете и индексируете текст на нескольких языках. Например, если этому свойству присвоено значение FALSE, каталог будет рассматривать слова "resume" и "resumé", как если бы они были одинаковыми словами.
  • Время ожидания подключения. Это свойство представляет время ожидания ответа подключения от сервера или хранилища данных, представленное в структуре TIMEOUT_INFO . Это свойство можно использовать для точной настройки Поиска Windows.
  • Время ожидания данных Это свойство представляет время ожидания транзакции данных между индексатором и обработчиком протокола или фильтром, представленное в TIMEOUT_INFO структуре. Если это время прошло, процесс управляющей программы фильтрации завершается, чтобы предотвратить взаимоблокировку и другие проблемы с ресурсами.

Последние два свойства предназначены в первую очередь для использования в будущем. Каждое из этих свойств имеет get методы и put .

Метод Описание
get_DiacriticSensitivity /
put_DiacriticSensitivity
Значение TRUE, если каталог должен различать слова с диакритические знаки. False , если каталог должен игнорировать диакритические знаки. Для изменения этого свойства требуется перестроить индекс, так как ключи индекса могут стать недопустимыми.
get_ConnectTimeout /
put_ConnectTimeout
Время (в секундах) ожидания индексатором ответа на подключение от сервера или хранилища данных. Установка слишком большого значения может привести к задержкам, если многие сайты не отвечают. Установка слишком низкого значения может привести к тому, что некоторые сайты не будут выполнять обход контента.
get_DataTimeout /
put_DataTimeout
Время (в секундах) ожидания индексатором транзакции данных.

Работа в режиме с повышенными привилегиями

Для всех вызовов методов, обновляющих SystemIndex, требуется, чтобы приложение выполнялось с повышенными привилегиями. В противном случае приложение завершится сбоем с ошибкой "Отказано в доступе".

Управление индексом

Интерфейсы для управления индексом

Использование диспетчера поиска

Использование диспетчера области обхода контента