Обработчики фильтров, поставляемые с Windows

Корпорация Майкрософт предоставляет несколько стандартных фильтров с помощью Windows Search. Клиенты вызывают эти обработчики фильтров (которые являются реализациями интерфейса IFilter ) для извлечения текста и свойств из документа.

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

Примечания о реализации Поиска Windows

В Windows 7 и более поздних версиях фильтры, написанные в управляемом коде, явно блокируются. Фильтры ДОЛЖНЫ быть написаны в машинном коде из-за потенциальных проблем с управлением версиями среды CLR в процессе, в который выполняется несколько надстроек.

Реализация Windows 7 и 10

В Windows 7 и более поздних версиях существует новое поведение, которое возникает при регистрации обработчика фильтра, обработчика свойств или нового расширения. При установке нового обработчика свойств и (или) обработчика фильтра файлы с соответствующими расширениями автоматически переиндексируются.

В Windows 7 и более поздних версиях рекомендуется установить обработчик фильтра вместе с соответствующими обработчиками свойств и зарегистрировать обработчик фильтра перед обработчиком свойств. Регистрация обработчика свойств инициирует немедленное повторное индексирование ранее индексированных файлов без предварительного перезапуска и использует все ранее зарегистрированные обработчики фильтров для индексирования содержимого.

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

Флаги описания свойств, относящиеся к Windows 7, см. в следующих справочных разделах: GETPROPERTYSTOREFLAGS, PROPDESC_COLUMNINDEX_TYPE и PROPDESC_SEARCHINFO_FLAGS.

Реализация Windows Vista

В Windows Vista и более ранних версиях установка IFilter или обработчика свойств не инициирует повторное индексирование существующих элементов, если независимый поставщик программного обеспечения явно не вызовет перестроение или повторное индексирование соответствующих URL-адресов.

Существует два основных различия между устаревшими приложениями, такими как Служба индексирования, и более новыми приложениями, такими как Windows Search, о которых следует знать при реализации фильтров:

  • Использование интерфейса IPersistStream .
  • Использование обработчиков свойств.

Во-первых, Windows Vista и Windows Search 3.0 и более поздних версий требуют использования IPersistStream по следующим причинам:

  • Для обеспечения производительности и совместимости в будущем.
  • Для повышения безопасности. Фильтры, реализованные с помощью IPersistStream , являются более безопасными, так как контексту, в котором выполняется фильтр, не требуются права на открытие файлов на диске или по сети.

Хотя в Поиске Windows используется только IPersistStream, вы также можете включить в фильтры реализации интерфейса IPersistFile и (или) интерфейса IPersistStorage для обеспечения обратной совместимости.

Второе основное отличие заключается в том, что Windows Vista и Windows Search 3.0 и более поздних версий имеют новую систему свойств , которая использует обработчики свойств для перечисления свойств элементов.

Однако бывают случаи, когда необходимо реализовать фильтр, который обрабатывает как содержимое, так и свойства, чтобы:

  • Поддержка устаревших реализаций MSSearch.
  • Обход ссылок.
  • Сохранение сведений о языке.
  • Рекурсивная фильтрация внедренных элементов.

В таких ситуациях требуется полная реализация фильтра, включая метод IFilter::GetValue для доступа к значениям свойств.

Устаревшая реализация

Как отмечалось ранее, Windows Vista и Windows Search включают новую систему свойств, которая инкапсулирует свойства элемента, которые отделены от содержимого элемента. Эта система свойств не существует в более ранних версиях Microsoft Windows Desktop Search (WDS) 2.x. Если фильтр должен поддерживать другие приложения, как описано выше, ему может потребоваться обрабатывать как содержимое, так и свойства.

Дополнительные сведения о разработке совместимого фильтра см. в следующих разделах: IFilter (для устаревших приложений) и Разработка надстроек фильтра (для устаревших приложений).

Фильтры Windows Search

Корпорация Майкрософт предоставляет несколько стандартных фильтров с помощью Windows Search. Содержимое библиотеки DLL IFilter приведено в следующей таблице. Щелкнув имя обработчика фильтра, вы перейдете к описанию этой реализации IFilter .

Обработчик фильтра Отфильтрованные файлы IFilter DLL
Обработчик фильтра MIME Mime (Multipurpose Internet Mail Extension) mimefilt.dll
Обработчик фильтра HTML HTML 3.0 или более ранняя версия nlhtml.dll
Обработчик фильтра документов Microsoft Word, Excel, PowerPoint offfilt.dll
Обработчик фильтра обычного текста Обычные текстовые файлы — IFilter по умолчанию query.dll
Обработчик двоичного или пустого фильтра Двоичные файлы — NULL IFilter query.dll

Обработчик фильтра MIME

Обработчик фильтра MIME (в mimefilt.dll) извлекает текст и сведения о свойствах из файлов с расширениями .eml, .mht и .mhtml.

Обработчик фильтра HTML

Обработчик фильтра HTML (в nlhtml.dll) извлекает текст и сведения о свойствах из класса htmlfiles, чтобы их можно было индексировать с помощью Windows Search. Описание связи между IFilter и типом файла см. в разделе "Поиск библиотеки DLL IFilter для файла" статьи Регистрация обработчиков фильтров.

Функцию META тегов HTML-документов можно использовать для передачи специальных запросов обработки в IFilter HTML. META теги находятся в начале HTML-файла в HEAD ... /HEAD тегах, как показано в следующем примере.

   <head>
     <META NAME="DESCRIPTION"
           CONTENT="This text appears on the results page as the document's summary.">
   </head>

Некоторые HTML-теги META автоматически сопоставляются со значениями хорошо известных наборов свойств и идентификатора свойства (идентификатора свойства (PID)), чтобы запросы к этим свойствам выполняли поиск сопоставленного содержимого. Некоторые примеры приведены в следующей таблице. Список системных свойств, которые можно использовать для форматов файлов, см. в разделе Системные свойства для пользовательских форматов файлов.

Пример свойства Сопоставлено с
meta name="author" content="ruth" Свойство author в наборе свойств Сводная информация.
meta name="subject" content="word processing" Свойство subject в наборе свойств Сводная информация.
meta name="keywords" content="fonts, serif" Свойство ключевое слово в наборе свойств Сводная информация.
meta name="ms.category" content="fiction" Свойство category в наборе свойств "Сводная информация" документа.

Некоторые функции HTML IFilter перечислены в следующей таблице.

Задача Действие Пример
Создание специальных абстракционных данных из файлов Используйте тег , META NAME="DESCRIPTION"... чтобы указать IFilter использовать строку после CONTENT ключевое слово в качестве абстрактного документа.

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


<head>
  <META NAME="DESCRIPTION" CONTENT="This text will appear on the results page as the document's summary.">
</head>
 
Предотвращение фильтрации отдельных файлов meta name Добавьте тег в файл.
  <meta name="robots" content="noindex">
Настройка кода языка для файла (чтобы убедиться, что система выбирает правильные языковые средства разбиения по словам и шумные файлы слов) Добавьте следующий meta name тег в файл, где поле содержимого указывает соответствующий код языка (в символах или с помощью значения языкового стандарта).
<meta name="ms.locale" content="EN">
<meta name="ms.locale" content=1033>

Обработчик фильтра документов

Обработчик фильтра документов (в offilt.dll) фильтрует файлы для некоторых расширений документов в Microsoft Office. К ним относятся файлы с расширениями .doc, .mdb, .ppt и .xlt, например.

Обработчик фильтра обычного текста

Для файлов в виде обычного текста в Windows Search используется обработчик фильтра текста, который фильтрует как системные свойства (например, имена файлов), так и содержимое файла. Если тип файла не имеет связи IFilter в реестре, Поиск Windows индексирует только свойства оболочки для файла. Однако пользователь может использовать дополнительные параметры на панели управления Параметры индексирования для свойства индекса или свойства индекса и содержимого файла.

Снимок экрана: диалоговое окно

Если пользователь выбирает этот параметр для типа файла без связанного IFilter, обработчик фильтра текста используется для извлечения содержимого файла. Обработчик фильтра текста не "понимает" формат документа; при фильтрации содержимого файла он обрабатывается как последовательность символов. Он проверка для метки порядка байтов Юникода в начале файла.

Обработчик двоичного или нулевого фильтра

При обнаружении зарегистрированного двоичного файла используется обработчик фильтра NULL. Обработчик фильтра NULL извлекает только системные свойства. Содержимое двоичного файла не фильтруется. Примеры системных свойств: FileName, LastWriteTime, FileSize и Attributes.

Дополнительные ресурсы

Разработка обработчиков фильтров

Сведения о обработчиках фильтров в Windows Search

Рекомендации по созданию обработчиков фильтров в Windows Search

Возврат свойств из обработчика фильтра

Реализация обработчиков фильтров в Windows Search

Регистрация обработчиков фильтров

Тестирование обработчиков фильтров