Erste Schritte mit der Volltextsuche

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

Bei SQL Server-Datenbanken werden die Volltexte standardmäßig aktiviert. Bevor Sie Volltextabfragen jedoch ausführen können, müssen Sie einen Volltextkatalog und einen Volltextindex für die Tabellen oder indizierten Sichten, die Sie suchen möchten, erstellen.

Volltextsuche in zwei Schritten einrichten

Es gibt zwei grundlegende Schritte zum Einrichten der Volltextsuche:

  1. Erstellen eines Volltextkatalogs.
  2. Erstellen Sie einen Volltextindex für Tabellen oder indizierte Sichten, die Sie durchsuchen möchten.

Jeder Volltextindex muss einem Volltextkatalog angehören. Sie können einen separaten Textkatalog für jeden Volltextindex erstellen oder einem Katalog mehrere Volltextindizes zuordnen. Ein Volltextkatalog ist ein virtuelles Objekt und gehört keiner Dateigruppe an. Der Katalog ist ein logisches Konzept, das auf eine Gruppe von Volltextindizes verweist.

Hinweis

Diese Schritte setzen voraus, dass Sie die optionalen Komponenten der Volltextsuche während der Installation von SQL Server installiert haben. Wenn dies nicht der Fall ist, müssen Sie SQL Server-Setup erneut ausführen, um sie hinzuzufügen.

Einrichten der Volltextsuche mithilfe eines Assistenten

Zum Einrichten der Volltextsuche mithilfe eines Assistenten finden Sie unter Verwenden des Volltextindizierungs-Assistenten weitere Informationen.

Einrichten der Volltextsuche mit Transact-SQL

Im folgenden zweiteiligen Beispiel wird ein Volltextkatalog mit Namen AdvWksDocFTCat in der AdventureWorks-Datenbank erstellt, und anschließend wird ein Volltextindex für die Tabelle Document in der Beispieldatenbank erstellt. Diese Anweisung erstellt den Volltextkatalog im bei der Installation angegebenen Standardverzeichnis. Der Ordner mit dem Namen AdvWksDocFTCat befindet sich im Standardverzeichnis.

  1. Zum Erstellen eines Volltextkatalogs mit dem Namen AdvWksDocFTCatverwendet das Beispiel eine CREATE FULLTEXT CATALOG Anweisung:

    USE AdventureWorks;  
    GO  
    CREATE FULLTEXT CATALOG AdvWksDocFTCat;  
    

    Weitere Informationen finden Sie unter Erstellen und Verwalten von Volltextkatalogen.

  2. Bevor Sie einen Volltextindex für die Document-Tabelle erstellen können, müssen Sie sicherstellen, dass die Tabelle über einen eindeutigen, einspaltigen Index verfügt, der keine NULL-Werte zulässt. Die folgende CREATE INDEX Anweisung erstellt einen eindeutigen Index in ui_ukDocder DocumentID-Spalte der Dokumenttabelle:

    CREATE UNIQUE INDEX ui_ukDoc ON Production.Document(DocumentNode);  
    
  3. Legen Sie den vorhandenen Volltextindex in der Document Tabelle mithilfe der folgenden DROP FULLTEXT INDEX Anweisung ab.

    DROP FULLTEXT INDEX ON Production.Document
    GO
    
  4. Nachdem Sie über einen eindeutigen Schlüssel verfügen, können Sie mithilfe der folgenden Document Anweisung einen Volltextindex für die CREATE FULLTEXT INDEX Tabelle erstellen.

    CREATE FULLTEXT INDEX ON Production.Document  
    (  
        Document                         --Full-text index column name   
            TYPE COLUMN FileExtension    --Name of column that contains file type information  
            Language 2057                 --2057 is the LCID for British English  
    )  
    KEY INDEX ui_ukDoc ON AdvWksDocFTCat --Unique index  
    WITH CHANGE_TRACKING AUTO            --Population type;  
    GO  
    
    

    Die in diesem Beispiel definierte TYPE COLUMN gibt die Typenspalte in der Tabelle an, die den Typ des Dokuments in jeder Zeile der Spalte 'Document' enthält (die vom Typ Binär ist). In der Typspalte wird die vom Benutzer angegebene Dateierweiterung – „.doc“, „.xls“ usw. – für das Dokument der betreffenden Zeile gespeichert. Die Volltext-Engine verwendet die Dateierweiterung in einer bestimmten Zeile, um den richtigen Filter zum Parsen der Daten in dieser Zeile aufzurufen. Nachdem der Filter die Binärdaten der Zeile verarbeitet hat, zerlegt das angegebene Worttrennungsmodul den Inhalt. (In diesem Beispiel wird die Worttrennung für britisches Englisch verwendet.) Weitere Informationen finden Sie unter Konfigurieren und Verwalten von Suchfiltern.

    Weitere Informationen finden Sie unter Erstellen und Verwalten von Volltextindizes.

Wählen Sie Optionen für einen Volltextindex aus

Wählen Sie eine Sprache

Weitere Informationen zum Auswählen der Sprache für die Spalte finden Sie unter Auswählen einer Sprache beim Erstellen eines Volltextindex.

Wählen Sie eine Dateigruppe

Das Erstellen eines Volltextindex ist ziemlich E/A-intensiv. Zusammenfassend besteht es aus dem Lesen von Daten aus dem SQL Server, und dem anschließenden Weitergeben der gefilterten Daten an den Volltextindex. Die beste Vorgehensweise besteht darin, einen Volltextindex in der Datenbankdateigruppe anzuordnen, die am besten für die Optimierung der E/A-Leistung geeignet ist, oder ordnen Sie die Volltextindizes in einer anderen Dateigruppe auf einem anderen Volume an.

Wählen Sie einen Volltextkatalog

Es ist zu empfehlen, Tabellen mit denselben Updatemerkmalen (z. B. geringe Anzahl an Änderungen gegenüber einer großen Anzahl an Änderungen oder Tabellen, die regelmäßig zu bestimmten Tageszeiten geändert werden) zu gruppieren und demselben Volltextkatalog zuzuweisen. Indem Sie Zeitpläne für Volltextkataloge einrichten, bleiben Volltextindizes mit den Tabellen synchronisiert, ohne dass sich dies in Phasen umfangreicher Datenbankaktivitäten negativ auf die Ressourcenverwendung des Datenbankservers auswirkt.

Berücksichtigen Sie die folgenden Richtlinien:

  • Wenn Sie eine Tabelle mit mehreren Millionen Zeilen indizieren, sollten Sie die Tabelle einem eigenen Volltextkatalog zuweisen.

  • Berücksichtigen Sie sowohl den Umfang der Änderungen in den Tabellen, die mit einem Volltextindex indiziert werden, als auch die Gesamtzahl der Tabellenzeilen. Wenn die Gesamtzahl der geänderten Zeilen zusammen mit der Anzahl an Zeilen, die während der letzten Volltextauffüllung in der Tabelle enthalten waren, mehrere Millionen umfasst, sollten Sie die Tabelle einem eigenen Volltextkatalog zuweisen.

Ordnen Sie einen eindeutigen Index zu

Wählen Sie stets den kleinsten eindeutigen Index, der verfügbar ist, als eindeutigen Volltextschlüssel aus (ein 4 Byte umfassender, auf dem integer-Datentyp basierender Index ist am besten geeignet). Hierdurch können Sie den Umfang der Ressourcen, die vom Microsoft Search-Dienst im Dateisystem benötigt werden, erheblich reduzieren. Wenn Sie einen breiten Primärschlüssel verwenden (mehr als 100 Byte), sollten Sie erwägen, als eindeutigen Volltextschlüssel einen anderen eindeutigen Index in der Tabelle auszuwählen (oder einen anderen eindeutigen Index zu erstellen). Andernfalls kann die Volltextpopulation nicht fortgesetzt werden, wenn die Größe des eindeutigen Volltextschlüssels die maximal zulässige Größe (900 Byte) überschreitet.

Zuordnen einer Stoppliste

Eine Stoppliste ist eine Liste von Stoppwörtern, die auch als Rauschwörter bezeichnet werden. Jedem Volltextindex ist eine Stoppliste zugeordnet, und die Wörter der Stoppliste werden auf Volltextabfragen des Indexes angewendet. Standardmäßig ist der Systemstoppliste ein neuer Volltextindex zugeordnet. Sie können auch eine eigene Stoppliste erstellen und verwenden.

Die folgende CREATE FULLTEXT STOPLIST Transact-SQL-Anweisung erstellt z. B. eine neue Volltext-Stoppliste namens myStoplist durch Kopieren aus der Systemstoppliste:

CREATE FULLTEXT STOPLIST myStoplist FROM SYSTEM STOPLIST;  
GO  

Die folgende ALTER FULLTEXT STOPLIST Transact-SQL-Anweisung ändert eine Stoppliste mit dem Namen "myStoplist", wobei das Wort "en" zuerst für Spanisch und dann für Französisch hinzugefügt wird:

ALTER FULLTEXT STOPLIST myStoplist ADD 'en' LANGUAGE 'Spanish';  
ALTER FULLTEXT STOPLIST myStoplist ADD 'en' LANGUAGE 'French';  
GO  

Weitere Informationen finden sie unter Konfigurieren und Verwalten von Stoppwörtern und Stopplisten für Volltextsuche.

Aktualisieren Sie einen Volltextindex

Volltextindizes können wie reguläre SQL Server-Indizes automatisch aktualisiert werden, sobald Daten in den zugeordneten Tabellen geändert werden. Dies ist die Standardeinstellung. Alternativ dazu können Sie die Volltextindizes auch manuell auf dem aktuellen Stand halten oder in bestimmten Abständen aktualisieren lassen. Auffüllen eines Volltextindex kann zeitaufwändig und ressourcenintensiv sein. Aus diesem Grund wird das Indexupdate meist als asynchroner Vorgang durchgeführt, der im Hintergrund ausgeführt wird und den Volltextindex jeweils nach Änderungen in der Basistabelle aktualisiert.

Das sofortige Aktualisieren eines Volltextindex nach jeder Änderung in der Basistabelle ist auch ressourcenintensiv. Bei sehr hohen Update-, Einfügungs- und Löschungsraten kann es deshalb zu einer Verringerung der Abfrageleistung kommen. Wenn dies geschieht, sollten Sie in Erwägung ziehen, manuelle Aktualisierungen der Änderungsnachverfolgung regelmäßig zu planen, um mit den zahlreichen Änderungen Schritt zu halten, anstatt mit Abfragen um Ressourcen zu konkurrieren.

Weitere Informationen finden Sie unter Auffüllen von Volltextindizes.

Nächste Schritte

Nachdem Sie die SQL Server-Volltextsuche eingerichtet haben, können Sie mit dem Ausführen von Volltextabfragen beginnen. Weitere Informationen finden Sie unter Abfragen mit Volltextsuche.