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


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

Корпорация Майкрософт предоставляет несколько стандартных фильтров с помощью поиска Windows. Клиенты вызывают эти обработчики фильтров (которые являются реализацией интерфейса 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 или обработчика свойств не инициирует повторное индексирование существующих элементов, если только независимый поставщик программного обеспечения (ISV) явно не вызывает перестроение или повторное индексирование соответствующих URL-адресов.

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

  • Использование интерфейса 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 включают новую систему свойств, которая инкапсулирует свойства элемента, отдельное от содержимого элемента. Эта система свойств не существует в более ранних версиях microsoft Windows Desktop Search (WDS) 2.x. Если фильтр должен поддерживать другие приложения, как описано выше, может потребоваться обрабатывать как содержимое, так и свойства.

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

Фильтры поиска Windows

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

Обработчик фильтра Отфильтрованные файлы IFilter DLL
обработчик фильтра MIME Расширение многоцелевой почты Интернета (MIME) 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. Описание связи между IFilter и типом файла см. в разделе "Поиск библиотеки DLL IFilter для файла" в регистрации обработчиков фильтров.

Вы можете использовать функцию тега META HTML-документов для передачи специальных запросов на обработку в html-IFilter. 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)), чтобы запросы к этим свойствам выполнялись поиском сопоставленного содержимого. В следующей таблице перечислены некоторые примеры. Список системных свойств, которые можно использовать для форматов файлов, см. в разделе System-Defined Свойства для пользовательских форматов файлов.

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

Некоторые функции 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 используется обработчик текстового фильтра, который фильтрует как системные свойства (такие как имена файлов), так и содержимое файла. Если тип файла не имеет связи IFilter в реестре, поиск Windows индексирует только свойства оболочки для файла. Однако пользователь может использовать расширенных параметров в панели управления параметров индексирования для свойств индекса или свойств индекса и содержимого файла.

снимок экрана с диалоговым окном

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

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

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

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

  • Пример кода IFilterSample, доступный в GitHub, демонстрирует, как создать базовый класс IFilter для реализации интерфейса IFilter.
  • Общие сведения о процессе индексирования см. в процесса индексирования.
  • Общие сведения о типах файлов см. в типах файлов.
  • Сведения о запросах атрибутов сопоставления файлов для типа файла см. в разделе PerceivedTypes, SystemFileAssociations ирегистрации приложений.

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

о обработчиках фильтров в поиска Windows

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

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

реализации обработчиков фильтров в поиска Windows

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

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