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.

Der Vorgang der Volltextindizierung

Wenn eine Volltextauffüllung (auch als "Crawl" bezeichnet) initiiert wird, werden vom Volltextmodul große Batches von Daten in den Arbeitsspeicher geladen, und der Filterdaemonhost wird benachrichtigt. Der Host führt Filterung und Wörtertrennung aus und konvertiert die Daten in invertierte Wortlisten. Die konvertierten Daten werden dann von der Volltextsuche aus den Wortlisten abgerufen, Stoppwörter werden entfernt, und die Wortlisten werden für einen Batch in einem oder mehreren invertierten Indizes gespeichert.

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 den Filterdatenordner 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 Stoppwö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.

HinweisHinweis

Die Masterzusammenführung 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. Die Masterzusammenführung einer großen Datenmenge kann außerdem eine Transaktion mit langer Ausführungszeit erzeugen und das Abschneiden des Transaktionsprotokolls während des Prüfpunkts verzögern. In diesem Fall kann das Transaktionsprotokoll unter dem vollständigen Wiederherstellungsmodell erheblich anwachsen. Sie sollten sicherstellen, dass das Transaktionsprotokoll vor dem Reorganisieren eines großen Volltextindexes in einer Datenbank, die das vollständige Wiederherstellungsmodell verwendet, genügend Speicherplatz für eine Transaktion mit langer Laufzeit enthält. Weitere Informationen finden Sie unter Verwalten der Größe der Transaktionsprotokolldatei.

Der Vorgang der Volltextabfrage

Der Abfrageprozessor übergibt die Volltextabschnitte einer Abfrage zur Verarbeitung an das Volltextmodul. Das Volltextmodul führt die Wörtertrennung sowie optional Thesauruserweiterungen, Wortstammerkennung und die Stoppwortverarbeitung (auch als Füllwörter bezeichnet) durch. Anschließend werden die Volltextabschnitte der Abfrage als SQL-Operatoren und hierbei primär als Streaming-Tabellenwertfunktionen (Streaming Table-Valued Function, STVF) dargestellt. Während der Abfrageausführung greifen diese STVFs auf den invertierten Index zu, um die richtigen Ergebnisse abzurufen. Die Ergebnisse werden dann entweder direkt oder aber nach weiteren Verarbeitungsschritten an den Client zurückgegeben.