Der Vorgang der Volltextindizierung und -abfrage

Die Indizierungskomponente der Volltextsuche ist verantwortlich für die erste Auffüllung des Volltextindexes und die anschließende Aktualisierung des Indexes, wenn Daten in den volltextindizierten Tabellen geändert werden. Die Architektur des Volltextsammelmechanismus wurde in Microsoft SQL Server 2005 verbessert, um die Volltextindizierung effizienter zu machen. Dies hat zu erheblichen Leistungsverbesserungen geführt.

Der Vorgang der Volltextindizierung

Wenn eine Volltextauffüllung (auch als Crawl bezeichnet) initiiert wird, werden vom Datenbankmodul große Batches von Daten in den Arbeitsspeicher geladen, und das Microsoft-Volltextmodul für SQL Server (MSFTESQL) wird aufgefordert, mit der Indizierung zu beginnen. Der MSFTESQL-Dienst indiziert Zeichen- und formatierte Binärdaten aus mindestens einer Spalte einer Tabelle. Mithilfe einer Protokollhandlerkomponente ruft das Volltextmodul die Daten aus dem Arbeitsspeicher zur weiteren Verarbeitung ab, woraus ein Volltextindex entsteht.

Sind die Indizierungsdaten in einer varbinary(max)- oder image-Spalte gespeichert, extrahiert der Filter, der die IFilter-Schnittstelle implementiert, Text basierend auf dem angegebenen Dateiformat für diese Daten (z. B. Microsoft Word). In manchen Fällen erfordern die Filterkomponenten, dass die varbinary(max)- oder image-Daten statt in den Arbeitsspeicher in das Temp-Verzeichnis des Dienstkontos geschrieben werden.

Im Rahmen der Verarbeitung durchlaufen die gesammelten Textdaten eine Wörtertrennung, die den Text in einzelne Token oder Schlüsselwörter zerlegt. Die Sprache für die Zerlegung in Token wird auf Spaltenebene angegeben oder kann in varbinary(max)-, image- oder xml-Daten durch die Filterkomponente identifiziert werden.

Unter Umständen werden weitere Verarbeitungsschritte ausgeführt, um Füllwörter zu entfernen und Token zu normalisieren, bevor sie im Volltextindex oder einem Indexfragment gespeichert werden.

Nach dem Ende einer Auffüllung wird ein abschließender Mergeprozess ausgelöst, der die Indexfragmente zu einem Mastervolltextindex zusammenführt. Dies ermöglicht eine verbesserte Abfrageleistung, da statt mehrerer Indexfragmente nur der Masterindex abgefragt werden muss. Zudem können bessere Bewertungsstatistiken zum Erstellen der Relevanzrangfolge verwendet werden.

ms142591.note(de-de,SQL.90).gifHinweis:
Der Mastermergeprozess kann E/A-intensiv sein, da beim Zusammenführen der Indexfragmente umfangreiche Daten geschrieben und gelesen werden müssen. Eingehende Abfragen werden dadurch jedoch nicht blockiert.

Der Vorgang der Volltextabfrage

Eine von einem Client gesendete Volltextabfrage wird dem SQL Server-Abfrageprozessor im SQL Server-Prozess übermittelt. Der Abfrageprozessor wiederum übermittelt sie der Volltextabfragekomponente, die eine OLE DB-Befehlsstruktur erstellt und sie an den Microsoft Volltextmodul für SQL Server (MSFTESQL)-Dienst weitersendet. Im MSFTESQL-Prozess verarbeitet der Abfrageprozessor des Volltextmoduls die Abfrage mithilfe von Thesaurus- und Füllwortdateien sowie Wörtertrennung und Wortstammerkennung. Nach Verarbeitung dieser Abfrage gibt der MSFTESQL-Dienst dem SQL Server-Prozess ein Resultset zurück. Dieses Resultset kann zur weiteren Verarbeitung verwendet oder an den Client zurückgegeben werden.

Siehe auch

Konzepte

Architektur der Volltextsuche

Andere Ressourcen

Konzepte der Volltextsuche

Hilfe und Informationen

Informationsquellen für SQL Server 2005