Процесс индексирования в поиске Windows
В этом разделе описываются три этапа процесса индексирования и основные компоненты, участвующие в каждом из них, объясняются сроки индексирования и предоставляются некоторые заметки для сторонних разработчиков, которые хотят индексировать хранилища данных или форматы файлов.
Этот раздел организован следующим образом:
- Обзор
- Этап 1: Постановка URL-адресов в очередь для индексирования
- Шаг 2. Обход URL-адресов
- этап 3. Обновление индекса
- Как запланировано индексирование
- заметки для разработчиков
- Связанные темы
Обзор
Поиск Windows поддерживает индексирование свойств и содержимого из файлов различных форматов файлов, таких как .doc или .jpeg форматов, а также хранилища данных, такие как файловая система или почтовые ящики Windows Outlook. Существует два типа индексов: индексы значений, которые позволяют фильтровать и сортировать по всему значению свойства, и инвертированные индексы, которые индексируют слова в текстовых свойствах или содержимом. Если у вас есть пользовательский формат файла или хранилище данных, необходимо понять, как работает индексация в Поиске Windows, чтобы ваши элементы правильно индексировались.
Процесс индексирования выполняется на трех этапах, контролируемых компонентом поиска Windows, который называется сборщиком. На первом этапе сборщик добавляет URL-адреса в свои очереди. URL-адреса идентифицируют элементы для индексирования, а очереди — это просто приоритетные списки URL-адресов. На втором этапе средство сбора координирует другие компоненты поиска Windows и сторонние компоненты для доступа к элементам и сбора данных о них. Наконец, на третьем этапе собранные данные добавляются в индекс.
На следующей схеме показаны основные компоненты и поток данных через процесс индексирования. Ряд компонентов участвует в сборе данных для индекса. Некоторые из них являются частью поиска Windows, и некоторые из них приходят из сторонних приложений. Если у вас есть пользовательское хранилище данных или формат файлов, Windows Search использует обработчик протоколов и фильтр для доступа к URL-адресам и выделения свойств для индексирования. Компоненты поиска Windows отображаются синим цветом, а сторонние компоненты отображаются зеленым цветом.
схема процесса индексирования
Этап 1. Очереди URL-адресов для индексирования
На первом этапе индексирования средство сбора данных собирает сведения об обновлениях хранилищ данных, сравнивает эти сведения с известной областью обхода, а затем создает очередь URL-адресов для сбора данных для индекса. Для источников, не основанных на уведомлениях, таких как FAT-диски, сборщик периодически инициирует полный обход области обхода, чтобы данные в индексе сохранялись актуальными. Для таких источников, как NTFS, выполняется только один обход, а остальное обрабатывается уведомлениями из журнала изменений USN. Также не выполняется сканирование Microsoft Outlook. На следующей схеме показано высокоуровневое представление процесса очереди для индексирования без обхода.
схема
В остальной части этого раздела объясняется, как поиск Windows определяет URL-адреса для обхода и определяет некоторые важные термины.
Область обхода Область обхода — это набор URL-адресов, которые Windows Search сканирует, чтобы собрать данные о элементах, которые пользователь хочет индексировать для ускорения поиска. Поиск Windows добавляет некоторые URL-адреса в область обхода по умолчанию, например, пути к документам пользователей и папкам изображений. Другие URL-адреса можно добавлять сторонними приложениями, пользователями и групповой политикой. Наконец, пользователи и групповая политика могут явно исключить URL-адреса. Поиск Windows принимает все добавленные URL-адреса и удаляет исключенные URL-адреса для определения области обхода. Это рабочий набор URL-адресов, с которого средство сбора начинает работу.
сборщик Сборщик — это компонент Поиска Windows, который собирает сведения о URL-адресах в области обхода и создает очередь URL-адресов для индексатора. Когда элемент в области обхода добавляется, удаляется или обновляется, средство сбора данных уведомляется поставщиком уведомлений хранилища данных. Существует начальный обход, в котором средство сбора начинается с корневого каталога области обхода. URL-адрес передается обработчику протокола, а затем в соответствующий фильтр IFilter . Фильтр обычно представляет собой перечисление каталогов, которое создает больше URL-адресов. Уведомления находятся в стабильном состоянии. Как правило, каждый хранилище данных имеет собственный обработчик протокола, предоставляющий эти уведомления. Например, в локальной файловой системе журнал изменений USN выступает в качестве поставщика уведомлений для всех URL-адресов в рамках протокола file://. Аналогичным образом Microsoft Outlook выступает в качестве поставщика уведомлений для всех URL-адресов в рамках протокола mapi://. Когда пользователь получает, перемещает или удаляет электронную почту, Outlook уведомляет собирателя об изменении состояния электронной почты. Из этих уведомлений средство сбора создает очереди индексирования URL-адресов для обхода контента.
очереди индексирования Очереди индексирования — это списки URL-адресов, которые определяют элементы, которые необходимо индексировать или повторно индексировать. Средство сбора сравнивает URL-адреса, полученные от поставщиков уведомлений, с URL-адресами в области обхода. Каждый URL-адрес от поставщиков уведомлений, входящих в область обхода, добавляется в очередь, которую сборщик использует для определения приоритетов, какие URL-адреса следует обрабатывать далее.
Существует три очереди: высокоприоритетные уведомления, обычные уведомления и периодические уведомления. Очередь высокого приоритета — это для уведомлений, которые должны обрабатываться немедленно. Например, когда пользователь изменяет свойство заголовка элемента в проводнике Windows, представление проводника Windows должно обновляться сразу после изменения. Обычная очередь уведомлений — для всех оставшихся уведомлений об изменениях. Очереди уведомлений обрабатываются перед началом обхода, так как измененные элементы, скорее всего, интересуют пользователя. Сборщик обращается к данным для URL-адресов каждой очереди в порядке первый пришёл, первый ушёл (FIFO).
Дополнительные сведения о приоритете и API событий, представленных в Windows 7, см. в разделе Индексирование приоритетов и событий набора строк в Windows 7. Дополнительные сведения об управлении областью обхода и уведомлениях см. в предоставлении уведомлений об изменениях и с помощью диспетчера областей обхода.
Этап 2. Обход URL-адресов
На втором этапе индексирования средство сбора выполняет обход очередей, доступ к хранилищам данных и получение потоков элементов. Во-первых, средство сбора находит соответствующий обработчик протокола для каждого URL-адреса. Затем средство сбора передает URL-адрес обработчику протокола. Обработчик протокола получает доступ к элементу и возвращает метаданные элемента сборщику. Сборщик использует метаданные для идентификации правильного фильтра.
На следующей схеме показано высокоуровневое представление процесса обхода URL-адресов. Этот этап включает значительную координацию и взаимодействие между компонентами.
схема
В остальной части этого раздела описывается, как поиск Windows обращается к элементам для индексирования и объясняет роли каждого из участвующих компонентов.
сборщик на втором этапе, этапе обхода, сборщик обрабатывает URL в очередях, прежде всего в очереди с высоким приоритетом. Каждый URL-адрес проверяется для идентификации протокола. Затем средство сбора ищет обработчик протокола, зарегистрированный для этого протокола, и создает его в процессе узла протокола поиска.
Хост протокола поиска Хост протокола поиска — это просто изолированный хост-процесс для обработчиков протоколов. Как правило, поиск Windows создает два таких хост-процесса, один из которых выполняется в контексте безопасности системы, а другой - в контексте безопасности пользователя. Это разделение гарантирует, что данные, относящиеся к пользователю, никогда не выполняются в системном контексте.
Поиск Windows также использует хост-процесс для изоляции экземпляра обработчика протокола от других процессов или приложений. Таким образом, никакое внешнее приложение не может получить доступ к конкретному экземпляру обработчика протокола, и если обработчик протокола неожиданно выходит из строя, это затрагивает только процесс индексирования. Так как служба поиска Windows запускает сторонний код (обработчики протоколов), она периодически перезапускает процесс, чтобы минимизировать время успешной атаки для использования информации внутри процесса. Помимо этого, хост протокола поиска не влияет на обход URL-адресов или индексирование элементов.
обработчики протоколов обработчики протоколов предоставляют доступ к элементам в хранилище данных с помощью протоколов хранилища данных. Например, обработчик протокола NTFS предоставляет доступ к файлам на локальном диске с помощью протокола file://. Обработчик протокола знает, как пройти по хранилищу данных, определить новые или обновленные элементы и уведомить средства сбора данных. Затем при запуске обхода обработчик протокола предоставляет объект IUrlAccessor сборщику для привязки к базовому потоку элемента и возврату метаданных элемента, таких как ограничения безопасности и время последнего изменения.
Заметка
Обработчики протоколов не являются компонентами поиска Windows; они являются компонентами определенного протокола и хранилища данных, которые они предназначены для доступа. Если у вас есть пользовательское хранилище данных, которое требуется индексировать, необходимо реализовать обработчик протокола. Дополнительные сведения о обработчиках протоколов и их реализации см. в разработке обработчиков протоколов.
метаданные и поток С помощью метаданных, возвращаемых объектом IUrlAccessor, средство сбора определяет правильный фильтр для URL-адреса. Средство сбора анализирует расширение имени файла элемента и ищет фильтр, зарегистрированный для этого расширения. Если средство сбора данных не может найти фильтр, поиск Windows использует метаданные для получения минимального набора сведений о системном свойстве (например, System.ItemName) и обновляет индекс. В противном случае, когда средство сбора находит фильтр, начинается третий этап индексирования.
Этап 3. Обновление индекса
На третьем этапе индексирования средство сбора создает экземпляр правильного фильтра для URL-адреса и инициализирует фильтр с потоком из объекта IUrlAccessor. Затем фильтр обращается к элементу и возвращает содержимое для индекса. Если у вас есть пользовательский формат файла, поиск Windows использует фильтр для доступа к URL-адресам и выдачи содержимого и свойств для индексирования.
На следующей схеме показано высокоуровневое представление процесса доступа к данным. Этот этап включает значительную координацию и взаимодействие между компонентами.
диаграмма
В остальной части этого раздела описывается, как поиск Windows обращается к данным элементов для индексирования и объясняет роли каждого из участвующих компонентов.
Сборщик В начале этого этапа роль собирателя — создать экземпляр правильного фильтра для элемента и передать его потоку элементов. В конце этого этапа сборщик принимает содержимое и свойства, создаваемые обработчиком фильтров и свойств, и обновляет индекс.
узел фильтра узел фильтра — это просто процесс для фильтров и обработчиков свойств и выполняет функцию, аналогичную узлу протокола поиска. Процесс узла изолирует фильтры и обработчики свойств от остальной части системы по тем же причинам безопасности и стабильности, по которым узел протокола поиска обрабатывает изолированные обработчики протокола. Процесс узла выполняется с минимальными правами (он даже не может получить доступ к файловой системе) и иногда перезапускается для защиты от атак безопасности. Поиск Windows также отслеживает использование ресурсов, чтобы если фильтр потребляет слишком много ресурсов, процесс узла перезапускается.
фильтры являются критически важными компонентами в процессе индексирования, передающими информацию о предметах для индексатора. Фильтры именуются в честь основного интерфейса, используемого в их реализации, интерфейса IFilter, и, следовательно, иногда называются IFilters. Существует два типа фильтров: один из них взаимодействует с отдельными элементами, такими как файлы, и тем, который взаимодействует с контейнерами, такими как папки. Оба предоставляют данные для индекса.
Используя метаданные, возвращаемые объектом IUrlAccessor обработчика протокола, средство сбора определяет правильный фильтр для определенного URL-адреса и передает его потоку. Средство сбора определяет правильный фильтр через обработчик протокола или по расширению имени файла, типу MIME или идентификатору класса (CLSID). Если URL-адрес указывает на контейнер, фильтр выдает свойства контейнера и перечисляет элементы в контейнере (дочерние URL-адреса). Если URL-адрес указывает на элемент, фильтр возвращает текстовое содержимое, если какое-либо чтение свойств и является более сложным, чем обработчики свойств. Как правило, мы рекомендуем, чтобы фильтры выдавали содержимое элемента, а обработчики свойств выдавали свойства элемента. Однако если фильтру необходимо работать со старыми приложениями, которые не распознают обработчики свойств, можно реализовать фильтр для выдачи свойств.
Заметка
Фильтры не являются компонентами поиска Windows; они являются компонентами, связанными с определенным форматом файлов или контейнером, к ним предназначен доступ. Для дополнительной информации о фильтрах и способах их реализации для пользовательского формата файла или контейнера см. в Рекомендации по созданию обработчиков фильтров впоисковой системе Windows.
В следующей таблице перечислены результаты, полученные сборщиком от фильтра (IFilter) и обработчика свойств (IPropertyStore) во время процесса индексирования.
IFilter | IPropertyStore | |
---|---|---|
Разрешить запись | Нет | Да |
Смешивать содержимое и свойства | Да | Нет |
многоязычность | Да | Нет |
Генерировать ссылки | Да | Нет |
MIME | Да | Нет |
Границы текста | Предложение, абзац, глава | Нет |
клиент или сервер | Оба | Клиент |
внедрения | Сложный | Простой |
обработчики свойств обработчики свойств являются компонентами, которые считывают и записывают свойства для определенного формата файла. Они получают доступ к элементам и передают свойства для средства сбора данных таким же образом, как фильтры для содержимого. Обработчики свойств проще реализовать, чем фильтры. Если текстовый формат файла очень прост или файлы, как ожидается, будут очень маленькими, обработчик свойств может выдавать как свойства, так и содержимое.
Заметка
Обработчики свойств не являются компонентами поиска Windows; они являются компонентами, связанными с определенным форматом файлов, которые они предназначены для доступа. Дополнительные сведения об обработчиках свойств и о том, как реализовать их для пользовательского формата файлов, см. в Разработке обработчиков свойств дляПоиска Windows.
Свойства Поиск Windows предоставляет систему свойств , включающую большую библиотеку свойств. Любое свойство может отображаться в любом элементе, как определено обработчиком фильтров или свойств. Если у вас есть пользовательский формат файла, вы можете сопоставить свойства формата файла с этими системным свойствами и создать новые настраиваемые свойства. Когда обработчик фильтров или свойств выдает эти свойства, средство сбора обновляет индекс, чтобы пользователи могли выполнять поиск по вашим свойствам. Дополнительные сведения о создании и регистрации настраиваемых свойств для формата файла см. в системе свойств.
SystemIndex Индекс, называемый SystemIndex, хранит индексированные данные и состоит из хранилища свойств и индексов по свойствам и содержимому для свойств элемента, а также инвертированного индекса для текстового содержимого и свойств. После обновления индекса средство сбора данных может запрашивать индекс с помощью поиска Windows и других приложений. Дополнительные сведения о способах запроса индекса см. в разделе Запрос индекса программными.
Заметка
Помните, что при повторной регистрации схемы изменения, внесенные в атрибуты ранее определенных свойств, могут не учитываться индексатором. Решение — перестроить индекс или ввести новые свойства, которые отражают изменения вместо обновления старых (не рекомендуется). Дополнительные сведения см. в заметке о разработчиках в обзоре системы свойств.
Планирование индексирования
При первой установке поиска Windows выполняется полное индексирование области обхода и приостанавливается в периоды высокой активности ввода-вывода и активности пользователя. Область обхода по умолчанию состоит из расположений библиотек по умолчанию, таких как документы, музыка, рисункии видео. Уведомления обрабатываются еще до завершения первоначального обхода. Иногда сборщик выполняет обход URL-адресов из полной области обхода. Эти полные обходы обеспечивают обновленные данные в индексе. Например, если поставщик уведомлений не может отправлять уведомления или если служба поиска Windows завершается неожиданно, сборщик не будет иметь информации о новых или измененных элементах и не будет индексировать эти элементы. Существует два типа источников: только уведомления и уведомления с включением. В обоих источниках сборщик изначально сканирует индекс. После первоначального обхода источники, доступные только для уведомлений, никогда не будут выполнять полный обход, если не произойдет сбой, например журнал изменений USN переворачиваясь. Источники с поддержкой уведомлений выполняют добавочный обход при запуске индексатора, но затем прослушивают уведомления во время выполнения. NTFS и Microsoft Outlook предоставляют только уведомления. В Internet Explorer и FAT включена поддержка уведомлений.
Заметки для разработчиков
Качество данных в индексе и эффективность процесса индексирования зависят в значительной степени от реализации фильтра и обработчика свойств. Так как фильтр вызывается каждый раз, когда URL-адрес определяет формат файла, процесс индексирования может резко замедляться, если фильтр неэффективн. Если обработчик свойств неправильно сопоставляет все свойства файлов с системными свойствами или не правильно выдает эти свойства, данные в индексе будут неверными, а затем поиск этих свойств вернет неверные результаты. В случае ошибки фильтра или обработчика свойств индексатор не сможет индексировать данные.
Приложения и процессы, отличные от службы поиска Windows, используют обработчики протоколов, фильтры и обработчики свойств. Ваши реализации могут повлиять на эти приложения так, как вы не ожидаете. Руководство по разработке поиска Windows предоставляет рекомендации по выбору дизайна и тестированию каждого из этих компонентов.
Связанные разделы
Индексирование, запросы и уведомления в Windows Search
Процесс запросов в поисковой системе Windows