Erstellen und Verwalten von Volltextindizes

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance

Dieses Thema beschreibt das Erstellen, Auffüllen und Verwalten von Volltextindizes in SQL Server.

Erstellen eines Volltextkatalogs

Bevor Sie einen Volltextindex erstellen können, müssen Sie einen Volltextkatalog erstellen. Der Katalog ist ein virtueller Container für ein oder mehrere Volltextindizes. Weitere Informationen finden Sie unter Erstellen und Verwalten von Volltextkatalogen.

Erstellen, Ändern oder Löschen eines Volltextindexes

Auffüllen eines Volltextindexes

Der Vorgang, bei dem ein Volltextindex erstellt und verwaltet wird, wird als Auffüllung (oder Durchforstung) bezeichnet. Es gibt drei Typen der Auffüllung eines Volltextindexes:

  • Vollständige Auffüllung
  • Auffüllung basierend auf der Änderungsnachverfolgung
  • Inkrementelle Auffüllung basierend auf einem Zeitstempel

Weitere Informationen finden Sie unter Auffüllen von Volltextindizes.

Anzeigen der Eigenschaften eines Volltextindexes

Anzeigen der Eigenschaften eines Volltextindexes mit Transact-SQL

Katalogsicht oder dynamische Verwaltungssicht Beschreibung
sys.fulltext_index_catalog_usages (Transact-SQL) Gibt eine Zeile für jeden Verweis zwischen Volltextkatalog und Volltextindex zurück.
sys.fulltext_index_columns (Transact-SQL) Enthält eine Zeile für jede Spalte, die Teil eines Volltextindexes ist.
sys.fulltext_index_fragments (Transact-SQL) Ein Volltextindex verwendet interne Tabellen, die als Volltextindexfragmente bezeichnet werden, um die umgekehrten Indexdaten zu speichern. Diese Sicht kann verwendet werden, um die Metadaten zu diesen Fragmenten abzufragen. Diese Sicht enthält eine Zeile für jedes Volltextindexfragment in jeder Tabelle, die einen Volltextindex enthält.
sys.fulltext_indexes (Transact-SQL) Enthält eine Zeile pro Volltextindex eines Tabellenobjekts.
sys.dm_fts_index_keywords (Transact-SQL) Gibt Informationen zum Inhalt eines Volltextindex für die angegebene Tabelle zurück.
sys.dm_fts_index_keywords_by_document (Transact-SQL) Gibt Informationen zum Inhalt auf Dokumentebene eines Volltextindex für die angegebene Tabelle zurück. Ein Schlüsselwort kann in mehreren Dokumenten angezeigt werden.
sys.dm_fts_index_population (Transact-SQL) Gibt Informationen zu den aktuell ausgeführten Volltextindexauffüllungen zurück.

Anzeigen der Eigenschaften eines Volltextindexes mit Management Studio

Hinweis

Verwenden Sie Transact-SQL, um Eigenschaften von Volltextindizes für Azure SQL-Datenbanken anzuzeigen.

  1. Erweitern Sie in Management Studio im Objekt-Explorer den Server.

  2. Erweitern Sie Datenbanken, und erweitern Sie dann die Datenbank, die den Volltextindex enthält.

  3. Erweitern Sie Tabellen.

  4. Klicken Sie mit der rechten Maustaste auf die Tabelle, für die der Volltextindex definiert ist. Wählen Sie Volltextindex, und klicken Sie dann im Kontextmenü Volltextindex auf Eigenschaften. Das Dialogfeld Volltextindexeigenschaften wird geöffnet.

  5. Im Bereich Seite auswählen können Sie eine der folgenden Seiten auswählen:

    Seite Beschreibung
    Allgemein Ändert die grundlegenden Eigenschaften des Volltextindex. Beinhaltet mehrere änderbare Eigenschaften und eine Reihe von nicht änderbaren Eigenschaften, wie z. B. Datenbankname, Tabellenname und den Namen der Volltextschlüsselspalte. Die änderbaren Eigenschaften lauten:

    Volltextindex-Stoppliste

    Volltextindizierung aktiviert

    Änderungsnachverfolgung

    Sucheigenschaftenliste
    Spalten Zeigt die Tabellenspalten an, die für die Volltextindizierung verfügbar sind. Die ausgewählte Spalte bzw. die Spalten werden volltextindiziert. Sie können beliebig viele verfügbare Spalten auswählen und in den Volltextindex aufnehmen. Weitere Informationen finden Sie unter Auffüllen von Volltextindizes.
    Zeitpläne Verwenden Sie diese Seite, um Zeitpläne für einen SQL Server-Agent-Auftrag zu erstellen oder zu verwalten, der eine inkrementelle Tabellenauffüllung für die Auffüllungen des Volltextindexes beginnt. Weitere Informationen finden Sie unter Auffüllen von Volltextindizes.

    Hinweis: Sobald Sie das Dialogfeld Volltextindexeigenschaften schließen, werden alle neu erstellten Zeitpläne einem SQL Server-Agent-Auftrag zugeordnet (Start Incremental Table Population on Datenbankname.Tabellenname).
  6. Wählen Sie OK aus, um vorgenommene Änderungen zu speichern und das Dialogfeld Volltextindexeigenschaften zu schließen.

Anzeigen der Eigenschaften von indizierten Tabellen und Spalten

Mehrere -Funktionen, z. B. OBJECTPROPERTYEX, können verwendet werden, um den Wert verschiedener Eigenschaften der Volltextindizierung abzurufen. Diese Informationen sind für die Verwaltung und Problembehandlung der Volltextsuche hilfreich.

Die folgende Tabelle enthält die Volltexteigenschaften, die sich auf indizierte Tabellen und Spalten beziehen, sowie die zugehörigen -Funktionen.

Eigenschaft Beschreibung Funktion
FullTextTypeColumn TYPE COLUMN in der Tabelle, die die Dokumenttypinformationen der Spalte enthält. COLUMNPROPERTY
IsFulltextIndexed Gibt an, ob eine Spalte für die Volltextindizierung aktiviert wurde. COLUMNPROPERTY
IsFulltextKey Gibt an, ob der Index der Volltextschlüssel für eine Tabelle ist. INDEXPROPERTY
TableFulltextBackgroundUpdateIndexOn Gibt an, ob für eine Tabelle das Update von Volltextindizes im Hintergrund aktiviert wurde. OBJECTPROPERTYEX
TableFulltextCatalogId ID des Volltextkatalogs, in dem die Daten des Volltextindex für die Tabelle gespeichert sind. OBJECTPROPERTYEX
TableFulltextChangeTrackingOn Gibt an, ob für eine Tabelle die Volltext-Änderungsnachverfolgung aktiviert ist. OBJECTPROPERTYEX
TableFulltextDocsProcessed Die Anzahl der seit dem Start der Volltextindizierung verarbeiteten Zeilen. OBJECTPROPERTYEX
TableFulltextFailCount Die Anzahl von Zeilen, für die die Volltextsuche keinen Index erstellt hat. OBJECTPROPERTYEX
TableFulltextItemCount Die Anzahl von Zeilen, für die ein Volltextindex erfolgreich erstellt wurde. OBJECTPROPERTYEX
TableFulltextKeyColumn Die Spalten-ID der Volltextspalte für den eindeutigen Schlüssel. OBJECTPROPERTYEX
TableFullTextMergeStatus Gibt an, ob eine Tabelle über einen Volltextindex verfügt, der gerade zusammengeführt wird. OBJECTPROPERTYEX
TableFulltextPendingChanges Anzahl der zu verarbeitenden ausstehenden Änderungsnachverfolgungseinträge. OBJECTPROPERTYEX
TableFulltextPopulateStatus Der Auffüllungsstatus einer Volltexttabelle. OBJECTPROPERTYEX
TableHasActiveFulltextIndex Gibt an, ob eine Tabelle über einen aktiven Volltextindex verfügt. OBJECTPROPERTYEX

Abrufen von Informationen zur Volltextschlüsselspalte

Normalerweise müssen die Ergebnisse von CONTAINSTABLE- oder FREETEXTTABLE-Rowsetwertfunktionen mit der Basistabelle verknüpft werden. In solchen Fällen müssen Sie den Namen der eindeutigen Schlüsselspalte kennen. Sie können abfragen, ob ein bestimmter eindeutiger Index als Volltextschlüssel verwendet wird, und anschließend den Bezeichner der Volltextschlüsselspalte abrufen.

Überprüfen, ob ein bestimmter eindeutiger Index als Volltextschlüsselspalte verwendet wird

Verwenden Sie eine SELECT-Anweisung, um die INDEXPROPERTY-Funktion aufzurufen. Geben Sie im Funktionsaufruf die OBJECT_ID-Funktion an, um den Namen der Tabelle (table_name) in die Tabellen-ID umzuwandeln. Geben Sie den Namen eines eindeutigen Indexes der Tabelle und die IsFulltextKey -Indexeigenschaft an, wie im folgenden Beispiel gezeigt:

SELECT INDEXPROPERTY(OBJECT_ID('table_name'), 'index_name',  'IsFulltextKey');

Diese Anweisung gibt den Wert 1 zurück, wenn der Index verwendet wird, um die Eindeutigkeit für die Spalte des Volltextschlüssels zu erzwingen, oder den Wert 0, wenn dies nicht der Fall ist.

Beispiel

Im folgenden Beispiel wird abgefragt, ob der PK_Document_DocumentNode -Index zum Erzwingen der Eindeutigkeit der Volltextschlüsselspalte verwendet wird:

USE AdventureWorks2022;
GO
SELECT INDEXPROPERTY(OBJECT_ID('Production.Document'), 'PK_Document_DocumentNode',  'IsFulltextKey');

Dieses Beispiel gibt den Wert 1 zurück, wenn der PK_Document_DocumentNode -Index verwendet wird, um die Eindeutigkeit der Volltextschlüsselspalte zu erzwingen. Andernfalls wird 0 oder NULL zurückgegeben. NULL impliziert, dass ein ungültiger Indexname verwendet wird, der Indexname der Tabelle nicht zugeordnet werden kann, die Tabelle nicht vorhanden ist oder eine andere Fehlerbedingung vorliegt.

Suchen des Bezeichners der Volltextschlüsselspalte

Jede volltextfähige Tabelle beinhaltet eine Spalte, mit der die Eindeutigkeit aller Tabellenzeilen erzwungen wird (die UNIQUE**KEY-Spalte). Die TableFulltextKeyColumn -Eigenschaft, die mit der OBJECTPROPERTYEX-Funktion ermittelt werden kann, enthält die Spalten-ID der eindeutigen Schlüsselspalte.

Um diesen Bezeichner abzurufen, können Sie mit einer SELECT-Anweisung die OBJECTPROPERTYEX-Funktion aufrufen. Verwenden Sie die OBJECT_ID-Funktion, um den Namen der Tabelle (table_name) in die Tabellen-ID umzuwandeln, und geben Sie die TableFulltextKeyColumn -Eigenschaft wie folgt an:

SELECT OBJECTPROPERTYEX(OBJECT_ID('table_name'), 'TableFulltextKeyColumn' ) AS 'Column Identifier';

Beispiele

Im folgenden Beispiel wird der Bezeichner der Volltextschlüsselspalte oder NULL zurückgegeben. NULL impliziert, dass ein ungültiger Indexname verwendet wird, der Indexname der Tabelle nicht zugeordnet werden kann, die Tabelle nicht vorhanden ist oder eine andere Fehlerbedingung vorliegt.

USE AdventureWorks2022;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID('Production.Document'), 'TableFulltextKeyColumn');
GO

Das folgende Beispiel zeigt, wie der Bezeichner der eindeutigen Schlüsselspalte verwendet werden kann, um den Namen der Spalte zu ermitteln.

USE AdventureWorks2022;
GO

DECLARE @key_column SYSNAME

SET @key_column = COL_NAME(OBJECT_ID('Production.Document'),
   OBJECTPROPERTYEX(OBJECT_ID('Production.Document'), 'TableFulltextKeyColumn'));

SELECT @key_column AS 'Unique Key Column';
GO

Dieses Beispiel gibt eine Resultsetspalte mit dem Namen Unique Key Columnzurück, die eine einzelne Zeile mit dem Namen der eindeutigen Schlüsselspalte der Document-Tabelle enthält: DocumentNode. Beachten Sie, dass diese Abfrage NULL zurückgibt, wenn ein ungültiger Indexname verwendet wird, der Indexname der Tabelle nicht zugeordnet werden kann, die Tabelle nicht vorhanden ist oder eine andere Fehlerbedingung vorliegt.

Indizieren von varbinary(max)- und xml-Spalten

Wenn ein Volltextindex einer varbinary(max)-, varbinary- oder xml -Spalte erstellt wird, kann die Spalte mit den Volltextprädikaten (CONTAINS und FREETEXT) und -funktionen (CONTAINSTABLE und FREETEXTTABLE) wie jede andere volltextindizierte Spalte durchsucht werden.

Indizieren von varbinary(max)- oder varbinary-Daten

In einer einzelnen varbinary(max) - oder varbinary -Spalte können viele Dokumenttypen gespeichert werden. unterstützt jeden Dokumenttyp, für den ein Filter im Betriebssystem installiert und verfügbar ist. Der Dokumenttyp jedes Dokuments wird durch die Dateierweiterung des Dokuments identifiziert. Zum Beispiel verwendet die Volltextsuche für die Dateierweiterung .doc den Filter für Microsoft Word-Dokumente. Eine Liste der verfügbaren Dokumenttypen erhalten Sie, indem Sie die sys.fulltext_document_types -Katalogsicht abfragen.

Beachten Sie, dass die Volltext-Engine vorhandene Filter nutzen kann, die im Betriebssystem installiert sind. Bevor die Filter, Wörtertrennungen und Wortstammerkennungen des Betriebssystems verwendet werden können, müssen Sie diese in der Serverinstanz laden. Dies wird im Folgenden beschrieben:

EXEC sp_fulltext_service @action = 'load_os_resources', @value = 1;

Zum Erstellen eines Volltextindexes für eine varbinary(max)-Spalte benötigt die Volltext-Engine Zugriff auf die Dateierweiterungen der Dokumente in der varbinary(max)-Spalte. Diese Informationen müssen in einer Tabellenspalte, der so genannten Typspalte, gespeichert werden. Die Spalte muss der varbinary(max) -Spalte im Volltextindex zugeordnet sein. Beim Indizieren eines Dokuments verwendet die Volltext-Engine die Dateierweiterung in der Typspalte, um den richtigen Filter zu ermitteln.

Indizieren von XML-Daten

In einer xml -Datentypspalte werden ausschließlich XML-Dokumente und -Fragmente gespeichert. Für die Dokumente wird immer der XML-Filter verwendet. Ein Typspalte ist daher nicht erforderlich. Bei xml -Spalten indiziert der Volltextindex den Inhalt der XML-Elemente und ignoriert die XML-Markups. Attributwerte werden volltextindiziert, sofern es sich nicht um numerische Werte handelt. Elementtags werden als Tokenbegrenzungen verwendet. Wohlgeformte XML- oder HTML-Dokumente und -Fragmente in mehreren Sprachen werden unterstützt.

Weitere Informationen zum Indizieren und Abfragen einer xml-Spalte finden Sie unter Verwenden der Volltextsuche mit XML-Spalten.

Deaktivieren oder Reaktivieren der Volltextindizierung für eine Tabelle

In sind standardmäßig alle von Benutzern erstellten Datenbanken volltextfähig. Zudem wird eine einzelne Tabelle automatisch für die Volltextindizierung aktiviert, sobald ein Volltextindex für die Tabelle erstellt wird und dem Index eine Spalte hinzugefügt wird. Eine Tabelle wird für die Volltextindizierung automatisch deaktiviert, wenn die letzte Spalte aus dem Volltextindex der Tabelle entfernt wird.

Für eine Tabelle mit einem Volltextindex können Sie mit eine Tabelle für die Volltextindizierung manuell deaktivieren und erneut aktivieren.

  1. Erweitern Sie die Servergruppe, erweitern Sie Datenbanken, und erweitern Sie die Datenbank, die die Tabelle enthält, die für Volltextindizierung aktiviert werden soll.

  2. Erweitern Sie Tabellen, und klicken Sie mit der rechten Maustaste auf die Tabelle, die Sie deaktivieren oder für Volltextindizierung erneut aktivieren möchten.

  3. Wählen Sie Volltextindexaus, und klicken Sie anschließend auf Volltextindizierung deaktivieren oder Volltextindizierung aktivieren.

Entfernen eines Volltextindexes aus einer Tabelle

  1. Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf die Tabelle mit dem Volltextindex, den Sie löschen möchten

  2. Wählen Sie Volltextindex löschenaus.

  3. Klicken Sie auf OK , wenn Sie aufgefordert werden, das Löschen des Volltextindexes zu bestätigen.

Nächste Schritte