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


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

Диспетчер области обхода контента (CSM) позволяет добавлять и удалять корни поиска для хранилищ данных в и из область обхода "Поиск Windows".

В этом разделе рассматриваются следующие вопросы.

 

Сведения о корнях поиска

Корень поиска определяет основу пространства имен оболочки, в которой можно включить или исключить определенные области, и, как правило, является контейнером самого высокого уровня в протоколе, который можно перечислить. Он не указывает, какие части этого хранилища следует индексировать; он просто сигнализирует о том, что хранилище содержимого существует и связано с зарегистрированным обработчиком протокола. Синтаксис для идентификации корневого URL-адреса поиска включает протокол, идентификатор безопасности хранилища или пользователя, путь и при необходимости определенный элемент (например, файл). В следующих примерах показаны две формы синтаксиса для корня поиска.

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

Сегмент <протокола> должен следовать двумя (2) косыми чертами ('/'), если только это не файл: протокол, для которого требуется три косой черты (file:///). Сегмент <сайта или sid> представляет либо хранилище содержимого, либо идентификатор безопасности пользователя, если корень поиска предназначен для конкретного пользователя. Сегмент <пути> представляет собой набор контейнеров, таких как каталоги или папки, и может содержать подстановочный знак "*". Сегмент <элемента> является необязательным и может содержать подстановочный знак "*". Если элемент не включен, обязательно завершите сегмент пути косой чертой, иначе индексатор предполагает, что последний подконтейнер является элементом.

Например, предположим, что вы реализовали обработчик протокола (myPH) для обработки файлов типа *.myext для пользовательского приложения. Все эти файлы будут находиться в папке 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 отображает корневые элементы поиска для пользователей, чтобы они могли уточнить правила область для поиска. В процессе установки пользовательского обработчика протокола, контейнера или приложения можно определить область обхода контента по умолчанию с правилами включения и исключения. Эти правила представляются конечным пользователям в виде расположений. Пользователи могут перемещаться по подкаталогам предопределенного корневого каталога поиска и выбирать те из них, которые нужно включить в поиск, или удалять те из них, которые нужно исключить.

 

Перед началом

Прежде чем использовать любой из интерфейсов диспетчера области обхода контента (CSM), необходимо выполнить следующие предварительные действия.

  1. Создайте объект CrawlSearchManager и получите его интерфейс ISearchManager .
  2. Вызовите ISearchManager::GetCatalog для SystemIndex, чтобы получить экземпляр интерфейса 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 сообщает поисковой системе о контейнерах для обхода и (или) watch, а также о элементах в этих контейнерах для включения или исключения. Чтобы добавить новый корневой каталог поиска, создайте экземпляр объекта ISearchRoot , задайте атрибуты root, а затем вызовите ISearchCrawlScopeManager::AddRoot и передайте ему указатель на объект ISearchRoot . URL-адрес корня поиска имеет ту же форму, что и корень поиска, описанный выше.

В следующей таблице описаны соответствующие методы put для ISearchRoot. другие методы put интерфейса в настоящее время не используются в Windows Search. Для повышения безопасности рекомендуется включать идентификаторы безопасности пользователей (SID) во все корневые системы. Корня для каждого пользователя более безопасна, так как запросы выполняются в процессе для каждого пользователя, гарантируя, что один пользователь не может видеть элементы, индексированные из папки "Входящие" другого пользователя.

Метод Описание
put_ProvidesNotifications Установите значение TRUE , если обработчик протокола или другое приложение уведомляет поисковую систему об изменениях URL-адресов в корневом каталоге поиска. Уведомление указывает, что URL-адреса необходимо переиндексировать.
put_RootURL Задает корневой URL-адрес текущего поиска. URL-адрес принимает корневую форму поиска, описанную выше.

 

 

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

Чтобы добавить соответствующие корни для новых пользователей, выполните следующие действия.

  1. Получите идентификатор безопасности пользователя.
  2. Перечислите все корни, чтобы проверка, существует ли один для этого идентификатора безопасности.
  3. При необходимости добавьте новый корень с помощью идентификатора безопасности.

 

Удаление корней из области обхода контента

ISearchCrawlScopeManager можно использовать для удаления корневого каталога из область обхода, если этот URL-адрес больше не требуется индексировать. При удалении корневого каталога также удаляются все правила область для этого URL-адреса. Например, предположим, что вы хотите удалить хранилище содержимого и (или) его обработчик протокола из системы. Вы можете удалить приложение, удалить все данные, а затем удалить корень поиска из область обхода контента, а диспетчер области обхода контента удалит корень и все область правила, связанные с корнем.

Чтобы удалить существующий корневой каталог поиска, вызовите ISearchCrawlScopeManager::RemoveRoot с корнем поиска, который требуется удалить. URL-адрес корня поиска имеет ту же форму, что и корень поиска, описанный выше. Этот метод возвращает S_FALSE, если корень не найден, и код ошибки, если произошла ошибка при удалении найденного корня.

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

Примечание

В Windows Vista, если пользователи удаляются с помощью профилей пользователей в панель управления, CSM удаляет все правила и корня с их идентификатором безопасности и удаляет индексированные элементы из каталога. В Windows XP необходимо вручную удалить корни пользователей и правила.

 

 

Перечисление корней в области обхода контента

CSM перечисляет корни поиска с помощью стандартного интерфейса перечислителя в стиле COM IEnumSearchRoots. Этот интерфейс можно использовать для перечисления корней поиска для ряда целей. Например, может потребоваться отобразить весь область обхода контента в пользовательском интерфейсе или определить, находится ли определенный корень или дочерний элемент корня в область обхода контента.

 

Reference

ISearchCrawlScopeManager

ISearchRoot

IEnumSearchRoots

Основные понятия

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

Управление правилами области