Filterhandler, die mit Windows

Microsoft stellt mehrere Standardfilter mit Windows Search zur Verfügung. Clients rufen diese Filterhandler auf (bei denen es sich um Implementierungen der IFilter-Schnittstelle handelt), um Text und Eigenschaften aus einem Dokument zu extrahieren.

Dieses Thema ist wie folgt organisiert:

Windows Hinweise zur Implementierung der Suche

In Windows 7 und höher werden in verwaltetem Code geschriebene Filter explizit blockiert. Filter MÜSSEN aufgrund potenzieller CLR-Versionsprobleme mit dem Prozess, in dem mehrere Add-Ins ausgeführt werden, in nativem Code geschrieben werden.

Windows 7- und 10-Implementierung

In Windows 7 und höher tritt beim Registrieren eines Filterhandlers, Eigenschaftenhandlers oder einer neuen Erweiterung ein neues Verhalten auf. Wenn ein neuer Eigenschaftenhandler und/oder Filterhandler installiert ist, werden Dateien mit den entsprechenden Erweiterungen automatisch neu indiziert.

In Windows 7 und höher wird empfohlen, einen Filterhandler in Verbindung mit den entsprechenden Eigenschaftenhandlern zu installieren und den Filterhandler vor dem Eigenschaftenhandler zu registrieren. Die Registrierung des Eigenschaftenhandlers initiiert die sofortige erneute Indizierung zuvor indizierter Dateien, ohne dass zuerst ein Neustart erforderlich ist, und nutzt alle zuvor registrierten Filterhandler für die Inhaltsindizierung.

Wenn nur ein Filterhandler ohne einen entsprechenden Eigenschaftenhandler installiert wird, erfolgt die automatische erneute Indizierung entweder nach einem Neustart des Indizierungsdiensts oder einem Neustart des Systems.

Spezifische Eigenschaftenbeschreibungsflags für Windows 7 finden Sie in den folgenden Referenzthemen: GETPROPERTYSTOREFLAGS, PROPDESC _ COLUMNINDEX _ TYPE und PROPDESC _ SEARCHINFO _ FLAGS.

Windows Vista-Implementierung

In Windows Vista und früheren Versionen initiiert die Installation eines IFilter- oder Eigenschaftenhandlers keine erneute Indizierung vorhandener Elemente, es sei denn, ein unabhängiger Softwarehersteller (Independent Software Vendor, ISV) ruft explizit eine Neuerstellung oder Neuindizierung übereinstimmender URLs auf.

Es gibt zwei wesentliche Unterschiede zwischen Legacyanwendungen wie indexing Service und neueren Anwendungen wie Windows Search, die Sie beim Implementieren von Filtern beachten sollten:

Zunächst müssen Sie Windows Vista und Windows Search 3.0 und höher IPersistStream aus den folgenden Gründen verwenden:

  • Um die Leistung und zukünftige Kompatibilität sicherzustellen.
  • Um die Sicherheit zu erhöhen. Filter, die mit IPersistStream implementiert werden, sind sicherer, da der Kontext, in dem der Filter ausgeführt wird, nicht die Rechte zum Öffnen von Dateien auf dem Datenträger oder über das Netzwerk benötigt.

Während Windows Search nur IPersistStreamverwendet, können Sie aus Gründen der Abwärtskompatibilität auch implementierungen der IPersistFile-Schnittstelle und/oder der IPersistStorage-Schnittstelle in Ihre Filter einschließen.

Der zweite hauptunterschied besteht darin, dass Windows Vista und Windows Search 3.0 und höher über ein neues Eigenschaftensystem verfügen, das Eigenschaftenhandler verwendet, um Eigenschaften von Elementen aufzuzählen.

Es gibt jedoch Zeiten, in denen Sie einen Filter implementieren müssen, der sowohl Inhalt als auch Eigenschaften behandelt, um:

  • Unterstützung von älteren MSSearch-Implementierungen.
  • Durchlaufen Sie Links.
  • Beibehalten von Sprachinformationen.
  • Filtern Sie eingebettete Elemente rekursiv.

In diesen Situationen benötigen Sie eine vollständige Filterimplementierungen, einschließlich der IFilter::GetValue-Methode, um auf Eigenschaftswerte zuzugreifen.

Legacyimplementierungen

Wie bereits erwähnt, enthalten Windows Vista und Windows Search ein neues Eigenschaftensystem, das die Eigenschaften eines Elements kapselt, die vom Inhalt eines Elements getrennt sind. Dieses Eigenschaftensystem ist in früheren Versionen von Microsoft Windows DesktopSuche (WDS) 2.x nicht vorhanden. Wenn Ihr Filter wie oben beschrieben andere Anwendungen unterstützen muss, muss er möglicherweise sowohl Inhalt als auch Eigenschaften behandeln.

Weitere Informationen zum Entwickeln eines kompatiblen Filters finden Sie in den folgenden Themen: IFilter (für Legacyanwendungen)und Entwickeln von Filter-Add-Ins (für Legacyanwendungen).

Windows Suchfilter

Microsoft stellt mehrere Standardfilter mit Windows Search zur Verfügung. Die Inhalte der IFilter-DLL sind in der folgenden Tabelle zusammengefasst. Wenn Sie auf den Namen eines Filterhandlers klicken, gelangen Sie zur Beschreibung für diese IFilter-Implementierung.

Filterhandler Gefilterte Dateien IFilter-DLL
MIME-Filterhandler Multipurpose Internet Mail Extension (MIME) mimefilt.dll
HTML-Filterhandler HTML 3.0 oder früher nlhtml.dll
Dokumentfilterhandler Microsoft Word, Excel, PowerPoint offfilt.dll
Nur-Text-Filterhandler Nur-Text-Dateien – Standard-IFilter query.dll
Binärer oder NULL-Filterhandler Binärdateien – NULL-IFilter query.dll

MIME-Filterhandler

Der MIME-Filterhandler (in mimefilt.dll) extrahiert Text- und Eigenschaftsinformationen aus Dateien mit den Erweiterungen EML, MHT und MHTML.

HTML-Filterhandler

Der HTML-Filterhandler (in nlhtml.dll) extrahiert Text- und Eigenschaftsinformationen aus der Klasse "htmlfiles", sodass sie durch Windows Search indiziert werden können. Eine Beschreibung der Zuordnung zwischen IFilter und dem Dateityp finden Sie unter "Suchen der IFilter-DLL für eine Datei" unter Registrieren von Filterhandlern.

Sie können das META Tagfeature von HTML-Dokumenten verwenden, um spezielle Verarbeitungsanforderungen an den HTML-IFilter zu übermitteln. META -Tags treten am Anfang einer HTML-Datei innerhalb der HEAD ... /HEAD Tags auf, wie im folgenden Beispiel veranschaulicht.

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

Einige META HTML-Tags werden automatisch bekannten Eigenschaftssatz- und Eigenschafts-ID-Werten (Property Identifier, PID) zugeordnet, sodass Abfragen dieser Eigenschaften den zugeordneten Inhalt durchsuchen. Einige Beispiele sind in der folgenden Tabelle aufgeführt. Eine Liste der Systemeigenschaften, die Sie für Ihre Dateiformate verwenden können, finden Sie unter Systemdefinierte Eigenschaften für benutzerdefinierte Dateiformate.

Eigenschaftsbeispiel Zugeordnet zu
meta name="author" content="soll" Die author-Eigenschaft im Eigenschaftensatz Zusammenfassungsinformationen.
meta name="subject" content="word processing" Die subject-Eigenschaft im Eigenschaftensatz Zusammenfassungsinformationen.
meta name="keywords" content="fonts, serif" Die Schlüsselworteigenschaft im Eigenschaftensatz Zusammenfassungsinformationen.
meta name="ms.category" content="fiction" Die Kategorieeigenschaft im Eigenschaftensatz zusammenfassungsinformationen.

Einige Features des HTML-IFilters sind in der folgenden Tabelle aufgeführt.

Aufgabe Aktion Beispiel
Erstellen spezieller Abstracts aus Dateien Verwenden Sie das META NAME="DESCRIPTION"... -Tag, um den IFilter anzuweisen, die Zeichenfolge nach dem CONTENT Schlüsselwort als Dokumentstrah zu verwenden.
[!Note]
Der Filterprozess kann Abstracts für jede gefilterte Datei generieren, die standardmäßig ein Zeichensatz am Anfang der Datei ist.

<head>
  <META NAME="DESCRIPTION" CONTENT="This text will appear on the results page as the document's summary.">
</head>
 
Verhindern der Filterung einzelner Dateien Fügen Sie der Datei ein meta name Tag hinzu.
  <meta name="robots" content="noindex">
Festlegen des Sprachcodes für eine Datei (um sicherzustellen, dass das System die richtigen Sprachbegriffs-Breaker und Füllwortdateien aus wählt) Fügen Sie der Datei das folgende meta name Tag hinzu, wobei das Inhaltsfeld den entsprechenden Sprachcode angibt (entweder in Zeichen oder mithilfe des Gebietsschemawerts).
<meta name="ms.locale" content="EN">
<meta name="ms.locale" content=1033>

Dokumentfilterhandler

Der Dokumentfilterhandler (in offilt.dll) filtert Dateien nach einigen Erweiterungen von Dokumenten in Microsoft Office. Dazu gehören beispielsweise Dateien mit den Erweiterungen .doc, MDB, .ppt und XLT.

Nur-Text-Filterhandler

Bei Nur-Text-Dateien verwendet Windows Search den Textfilterhandler, der sowohl die Systemeigenschaften (z. B. Dateinamen) als auch den Inhalt einer Datei filtert. Wenn ein Dateityp keine IFilter-Zuordnung in der Registrierung aufweist, Windows Search-Indizes nur die Shell-Eigenschaften für die Datei. Der Benutzer kann jedoch die erweiterten Optionen in der Systemsteuerung Indizierungsoptionen verwenden, um Eigenschaften oder Indexeigenschaften und Dateiinhalte zu indizieren.

Screenshot des Dialogfelds "Erweiterte Optionen"

Wenn der Benutzer diese Option für einen Dateityp ohne zugeordneten IFilterausgibt, wird der Textfilterhandler verwendet, um den Inhalt der Datei zu extrahieren. Der Textfilterhandler "versteht" kein Dokumentformat. Beim Filtern des Inhalts einer Datei wird die Datei als Zeichensequenz behandelt. Es sucht am Anfang der Datei nach der Unicode-Bytereihenfolgemarkierung.

Binärer oder NULL-Filterhandler

Wenn eine registrierte Binärdatei gefunden wird, wird der NULL-Filterhandler verwendet. Der NULL-Filterhandler ruft nur die Systemeigenschaften ab. Der Inhalt einer Binärdatei wird nicht gefiltert. Beispiele für Systemeigenschaften sind FileName, LastWriteTime, FileSize und Attributes.

Weitere Ressourcen

Entwickeln von Filterhandlern

Informationen zu Filterhandlern in Windows Search

Bewährte Methoden zum Erstellen von Filterhandlern in Windows Suche

Zurückgeben von Eigenschaften von einem Filterhandler

Implementieren von Filterhandlern in Windows Search

Registrieren von Filterhandlern

Testen von Filterhandlern