Обработчики фильтров, поставляемые с 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 ключевое слово в качестве абстрактного документа.
Примечание. |
|
|
Предотвращение фильтрации отдельных файлов |
meta name Добавьте тег в файл. |
|
|
Настройка кода языка для файла (чтобы убедиться, что система выбирает правильные языковые средства разбиения по словам и шумные файлы слов) | Добавьте следующий meta name тег в файл, где поле содержимого указывает соответствующий код языка (в символах или с помощью значения языкового стандарта). |
|
Обработчик фильтра документов
Обработчик фильтра документов (в offilt.dll) фильтрует файлы для некоторых расширений документов в Microsoft Office. К ним относятся файлы с расширениями .doc, .mdb, .ppt и .xlt, например.
Обработчик фильтра обычного текста
Для файлов в виде обычного текста в Windows Search используется обработчик фильтра текста, который фильтрует как системные свойства (например, имена файлов), так и содержимое файла. Если тип файла не имеет связи IFilter в реестре, Поиск Windows индексирует только свойства оболочки для файла. Однако пользователь может использовать дополнительные параметры на панели управления Параметры индексирования для свойства индекса или свойства индекса и содержимого файла.
Если пользователь выбирает этот параметр для типа файла без связанного IFilter, обработчик фильтра текста используется для извлечения содержимого файла. Обработчик фильтра текста не "понимает" формат документа; при фильтрации содержимого файла он обрабатывается как последовательность символов. Он проверка для метки порядка байтов Юникода в начале файла.
Обработчик двоичного или нулевого фильтра
При обнаружении зарегистрированного двоичного файла используется обработчик фильтра NULL. Обработчик фильтра NULL извлекает только системные свойства. Содержимое двоичного файла не фильтруется. Примеры системных свойств: FileName, LastWriteTime, FileSize и Attributes.
Дополнительные ресурсы
- В примере кода IFilterSample , доступном на сайте GitHub, показано, как создать базовый класс IFilter для реализации интерфейса IFilter .
- Общие сведения о процессе индексирования см. в разделе Процесс индексирования.
- Общие сведения о типах файлов см. в разделе Типы файлов.
- Сведения об запросе атрибутов сопоставления файлов для типа файла см. в разделах PerceivedTypes, SystemFileAssociations и Регистрация приложений.
Связанные темы
Разработка обработчиков фильтров
Сведения о обработчиках фильтров в Windows Search
Рекомендации по созданию обработчиков фильтров в Windows Search
Возврат свойств из обработчика фильтра
Реализация обработчиков фильтров в Windows Search