Erste Schritte mit der VolltextsucheGet Started with Full-Text Search

GILT FÜR: jaSQL ServerjaAzure SQL-DatenbankneinAzure SQL Data Warehouse neinParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Bei SQL Server-Datenbanken werden die Volltexte standardmäßig aktiviert.SQL Server databases are full-text enabled by default. 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.Before you can run full-text queries, however, you must create a full text catalog and create a full-text index on the tables or indexed views you want to search.

Volltextsuche in zwei Schritten einrichtenSet up full-text search in two steps

Es gibt zwei grundlegende Schritte zum Einrichten der Volltextsuche:There are two basic steps to set up full-text search:

  1. Erstellen eines Volltextkatalogs.Create a full-text catalog.
  2. Erstellen eines Volltextindex für Tabellen oder eine indizierte Sicht, die Sie durchsuchen möchten.Create a full-text index on tables or indexed view you want to search.

Wir hören Ihnen zu: Wenn Sie in diesem Artikel – beispielsweise in einem Schritt oder Codebeispiel – veraltete oder falsche Informationen finden, lassen Sie es uns bitte wissen.We are listening: If you find something outdated or incorrect in this article, such as a step or a code example, please tell us. Sie können unten auf dieser Seite im Abschnitt Feedback auf die Schaltfläche Diese Seite klicken.You can click the This page button in the Feedback section at the bottom of this page. Wir lesen jedes Feedback zu SQL in der Regel am nächsten Tag.We read every item of feedback about SQL, typically the next day. Vielen Dank.Thanks.

Jeder Volltextindex muss einem Volltextkatalog angehören.Each full-text index must belong to a full-text catalog. Sie können einen separaten Textkatalog für jeden Volltextindex erstellen oder einem Katalog mehrere Volltextindizes zuordnen.You can create a separate text catalog for each full-text index, or you can associate multiple full-text indexes with a given catalog. Ein Volltextkatalog ist ein virtuelles Objekt und gehört keiner Dateigruppe an.A full-text catalog is a virtual object and does not belong to any filegroup. Der Katalog ist ein logisches Konzept, das auf eine Gruppe von Volltextindizes verweist.The catalog is a logical concept that refers to a group of full-text indexes.

Hinweis

Diese Schritte setzen voraus, dass Sie die optionalen Komponenten der Volltextsuche während der Installation von SQL Server installiert haben.These steps assume that you installed the optional Full-Text Search components when you installed SQL Server. Wenn dies nicht der Fall ist, müssen Sie SQL Server-Setup erneut ausführen, um sie hinzuzufügen.If not, you have to run SQL Server Setup again to add them.

Einrichten der Volltextsuche mithilfe eines AssistentenSet up full-text search with a wizard

Zum Einrichten der Volltextsuche mithilfe eines Assistenten finden Sie unter Verwenden des Volltextindizierungs-Assistenten weitere Informationen.To set up full-text search by using a wizard, see Use the Full-Text Indexing Wizard.

Einrichten der Volltextsuche mit Transact-SQLSet up full-text search with 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.The following two-part example creates a full-text catalog named AdvWksDocFTCat on the AdventureWorks sample database and then creates a full-text index on the Document table in the sample database. Diese Anweisung erstellt den Volltextkatalog im bei der Installation angegebenen Standardverzeichnis.This statement creates the full-text catalog in the default directory specified during SQL Server setup. Der Ordner mit dem Namen AdvWksDocFTCat befindet sich im Standardverzeichnis.The folder named AdvWksDocFTCat is in the default directory.

  1. Im Beispiel wird eine AdvWksDocFTCatCREATE FULLTEXT CATALOG -Anweisung verwendet, um einen Volltextkatalog mit dem Namen zu erstellen:To create a full-text catalog named AdvWksDocFTCat, the example uses a CREATE FULLTEXT CATALOG statement:

    USE AdventureWorks;  
    GO  
    CREATE FULLTEXT CATALOG AdvWksDocFTCat;  
    

    Weitere Informationen finden Sie unter Erstellen und Verwalten von Volltextkatalogen.For more info, see Create and Manage Full-Text Catalogs.

  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.Before you can create a full-text index on the Document table, ensure that the table has a unique, single-column, non-nullable index. Die folgende CREATE INDEX -Anweisung erstellt in der DocumentID-Spalte der Document-Tabelle den eindeutigen ui_ukDoc-Index:The following CREATE INDEX statement creates a unique index, ui_ukDoc, on the DocumentID column of the Document table:

    CREATE UNIQUE INDEX ui_ukDoc ON Production.Document(DocumentID);  
    
  3. Nachdem Sie einen eindeutigen Schlüssel erstellt haben, können Sie in der Document -Tabelle einen Volltextindex erstellen, indem Sie die folgende CREATE FULLTEXT INDEX -Anweisung verwenden.After you have a unique key, you can create a full-text index on the Document table by using the following CREATE FULLTEXT INDEX statement.

    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 Typspalte in der Tabelle an, die den Typ des Dokuments in der Spalte Document (binäre Spalte) enthält.The TYPE COLUMN defined in this example specifies the type column in the table that contains the type of the document in each row of the column 'Document' (which is of binary type). In der Typspalte wird die vom Benutzer angegebene Dateierweiterung – „.doc“, „.xls“ usw. – für das Dokument der betreffenden Zeile gespeichert.The type column stores the user-supplied file extension - ".doc", ".xls", and so forth - of the document in a given row. Die Volltext-Engine verwendet die Erweiterung einer Zeile, um den richtigen Filter für die Analyse der Daten in dieser Zeile aufzurufen.The Full-Text Engine uses the file extension in a given row to invoke the correct filter to use for parsing the data in that row. Nachdem der Filter die binären Daten der Zeile analysiert hat, analysiert die angegebene Worttrennung den Inhalt.After the filter has parsed the binary data of the row, the specified word breaker parses the content. (In diesem Beispiel wird die Worttrennung für britisches Englisch verwendet.) Weitere Informationen finden Sie unter Konfigurieren und Verwalten von Filtern für die Suche.(In this example, the word breaker for British English is used.) For more information, see Configure and Manage Filters for Search.

    Weitere Informationen finden Sie unter Erstellen und Verwalten von Volltextindizes.For more info, see Create and Manage Full-Text Indexes.

Wählen Sie Optionen für einen Volltextindex ausChoose options for a full-text index

Wählen Sie eine SpracheChoose a language

Weitere Informationen zum Auswählen der Sprache für die Spalte finden Sie unter Auswählen einer Sprache beim Erstellen eines Volltextindex.For information about choosing the column language, see Choose a Language When Creating a Full-Text Index.

Wählen Sie eine DateigruppeChoose a filegroup

Das Erstellen eines Volltextindex ist ziemlich E/A-intensiv.The process of building a full-text index is fairly I/O intensive. Zusammenfassend besteht es aus dem Lesen von Daten aus SQL ServerSQL Server, und dem anschließenden Weitergeben der gefilterten Daten an den Volltextindex.In summary, it consists of reading data from SQL ServerSQL Server, and then propagating the filtered data to the full-text index. 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.As a best practice, locate a full-text index in the database filegroup that is best for maximizing I/O performance or locate the full-text indexes in a different filegroup on another volume.

Wählen Sie einen VolltextkatalogChoose a full-text catalog

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.We recommend associating tables with the same update characteristics (such as small number of changes versus large number of changes, or tables that change frequently during a particular time of day) together under the same full-text catalog. 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.By setting up full-text catalog population schedules, full-text indexes stay synchronous with the tables without adversely affecting the resource usage of the database server during periods of high database activity.

Beachten Sie die folgenden Richtlinien:Consider the following guidelines:

  • Wenn Sie eine Tabelle mit mehreren Millionen Zeilen indizieren, sollten Sie die Tabelle einem eigenen Volltextkatalog zuweisen.If you are indexing a table with millions of rows, assign the table to its own full-text catalog.

  • Berücksichtigen Sie sowohl den Umfang der Änderungen in den Tabellen, die mit einem Volltextindex indiziert werden, als auch die Gesamtzahl der Tabellenzeilen.Consider the amount of change occurring in the tables being full-text indexed, as well as the total number of rows. 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.If the total number of rows being changed, together with the number of rows in the table present during the last full-text population, represents millions of rows, assign the table to its own full-text catalog.

Ordnen Sie einen eindeutigen Index zuAssociate a unique index

Wählen Sie stets den kleinsten eindeutigen Index, der verfügbar ist, als eindeutigen Volltextschlüssel ausAlways select the smallest unique index available for your full-text unique key. (ein 4 Byte umfassender, auf dem integer-Datentyp basierender Index ist am besten geeignet). Hierdurch können Sie den Umfang der Ressourcen, die vom MicrosoftMicrosoft Search-Dienst im Dateisystem benötigt werden, erheblich reduzieren.(A 4-byte, integer-based index is optimal.) This significantly reduces the resources required by MicrosoftMicrosoft Search service in the file system. 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).If the primary key is large (over 100 bytes), consider choosing another unique index in the table (or creating another unique index) as the full-text unique key. Andernfalls kann die Volltextauffüllung nicht mehr fortgesetzt werden, wenn der eindeutige Volltextschlüssel die maximal zulässige Größe erreicht (900 Byte).Otherwise, if the full-text unique key size exceeds the maximum size allowed (900 bytes), full-text population will not be able to proceed.

Zuordnen einer StopplisteAssociate a stoplist

Eine Stoppliste ist eine Liste von Stoppwörtern. Stoppwörter werden auch als Füllwörter bezeichnet.A stoplist is a list of stopwords, also known as noise words. Jedem Volltextindex ist eine Stoppliste zugeordnet, und die Wörter der Stoppliste werden auf Volltextabfragen des Indexes angewendet.A stoplist is associated with each full-text index, and the words in that stoplist are applied to full-text queries on that index. Standardmäßig ist der Systemstoppliste ein neuer Volltextindex zugeordnet.By default, the system stoplist is associated with a new full-text index. Sie können auch eine eigene Stoppliste erstellen und verwenden.You can create and use your own stoplist too.

Die folgende CREATE FULLTEXT STOPLISTTransact-SQLTransact-SQL-Anweisung erstellt z.B. durch Kopieren aus der Systemstoppliste eine neue Volltext-Stoppliste mit dem Namen „myStoplist3“:For example, the following CREATE FULLTEXT STOPLIST Transact-SQLTransact-SQL statement creates a new full-text stoplist named myStoplist by copying from the system stoplist:

CREATE FULLTEXT STOPLIST myStoplist FROM SYSTEM STOPLIST;  
GO  

Die folgende -Anweisung Transact-SQLTransact-SQL ändert eine Stoppliste mit dem Namen „myStoplist“, indem zuerst für Spanisch und dann für Französisch das Wort „en“ hinzugefügt wird:The following ALTER FULLTEXT STOPLIST Transact-SQLTransact-SQL statement alters a stoplist named myStoplist, adding the word 'en', first for Spanish and then for French:

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.For more information, see Configure and Manage Stopwords and Stoplists for Full-Text Search.

Aktualisieren Sie einen VolltextindexUpdate a full-text index

Volltextindizes können wie reguläre SQL ServerSQL Server -Indizes automatisch aktualisiert werden, sobald Daten in den zugeordneten Tabellen geändert werden.Like regular SQL ServerSQL Server indexes, full-text indexes can be automatically updated as data is modified in the associated tables. Dies ist das Standardverhalten.This is the default behavior. Alternativ dazu können Sie die Volltextindizes auch manuell auf dem aktuellen Stand halten oder in bestimmten Abständen aktualisieren lassen.Alternatively, you can keep your full-text indexes up-to-date manually, or at specified scheduled intervals. Auffüllen eines Volltextindex kann zeitaufwändig und ressourcenintensiv sein.Populating a full-text index can be time-consuming and resource-intensive. 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.Therefore, index updating is usually performed as an asynchronous process that runs in the background and keeps the full-text index up to date after modifications in the base table.

Das sofortige Aktualisieren eines Volltextindex nach jeder Änderung in der Basistabelle ist auch ressourcenintensiv.Updating a full-text index immediately after each change in the base table is also resource-intensive. Bei sehr hohen Update-, Einfügungs- und Löschungsraten kann es deshalb zu einer Verringerung der Abfrageleistung kommen.Therefore, if you have a high update/insert/delete rate, you may experience some degradation in query performance. In diesem Fall sollten Sie erwägen, eine manuelle Änderungsnachverfolgung und entsprechende Updates zu planen, um die zahlreichen Änderungen von Zeit zu Zeit zu bearbeiten, anstatt mit den Abfragen um Ressourcen zu wetteifern.If this occurs, consider scheduling manual change tracking updates to keep up with the numerous changes from time to time, rather than competing with queries for resources.

Weitere Informationen finden Sie unter Auffüllen von Volltextindizes.For more info, see Populate Full-Text Indexes.

Nächste SchritteNext steps

Nachdem Sie die SQL Server-Volltextsuche eingerichtet haben, können Sie mit dem Ausführen von Volltextabfragen beginnen.After you set up SQL Server Full-Text Search, you're ready to run full-text queries. Weitere Informationen finden Sie unter Abfragen mit Volltextsuche.For more info, see Query with Full-Text Search.