CREATE FULLTEXT INDEX (Transact-SQL)

Aktualisiert: 12. Dezember 2006

Erstellt einen Volltextindex für eine oder mehrere Spalten einer Tabelle oder indizierten Sicht in einer Datenbank. Pro Tabelle bzw. indizierter Sicht ist nur ein Volltextindex zulässig. Standardmäßig wird für eine Datenbank bei ihrer Erstellung die Volltextsuche aktiviert.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

CREATE FULLTEXT INDEX ON table_name
     [(column_name [TYPE COLUMN type_column_name] 
          [LANGUAGE language_term] [,...n])]
     KEY INDEX index_name
          [ON fulltext_catalog_name]
     [WITH 
          {CHANGE_TRACKING {MANUAL | AUTO | OFF [, NO POPULATION]}}
     ]

Argumente

  • table_name
    Der Name der Tabelle oder der indizierten Sicht mit den Spalten, die im Volltextindex enthalten sind.
  • column_name
    Der Name einer oder mehrerer Spalten, die im Volltextindex berücksichtigt werden. Nur für Spalten vom Typ char, varchar, nchar, nvarchar, text, ntext, image, xml und varbinary kann ein Index für die Volltextsuche erstellt werden.
  • TYPE COLUMN type_column_name
    Der Name der Spalte in table_name, die den Dokumenttyp von column_name enthält.

    type_column_name muss vom Typ char, nchar, varchar oder nvarchar sein. Geben Sie type_column_name nur an, wenn die Spalte bzw. Spalten in column_name vom Typ varbinary(max) oder image sind; andernfalls wird in SQL Server ein Fehler zurückgegeben.

    Weitere Informationen finden Sie unter Filter für die Volltextsuche.

  • LANGUAGE language_term
    Die Sprache der in column_name gespeicherten Daten.

    language_term ist optional und kann als Zeichenfolge-, ganzzahliger oder Hexadezimalwert entsprechend dem Gebietsschemabezeichner (LCID) einer Sprache angegeben werden. Wird language_term angegeben, wird die entsprechende Sprache für den Index von Daten verwendet, die in den Spalten char, nchar, varchar, nvarchar, text und ntext gespeichert sind. Diese Sprache ist die Standardsprache, die zur Abfragezeit verwendet wird, wenn language_term nicht als Teil eines Volltextprädikats für die Spalte angegeben wird. Wird kein Wert angegeben, wird die Standardsprache der SQL Server-Instanz verwendet.

    Ist die Sprache unbekannt oder sind in column_name mehrere Sprachen gespeichert (und hat die Spalte nicht den Datentyp BLOB oder XML), dann verwenden Sie die neutrale Sprache (0x0). Weitere Informationen finden Sie unter Internationale Gesichtspunkte bei der Volltextsuche.

    Verwenden Sie die gespeicherte Prozedur sp_configure, um auf Informationen zur Standardvolltextsprache der Microsoft SQL Server-Instanz zuzugreifen. Weitere Informationen finden Sie unter sp_configure (Transact-SQL) und default full-text language (Option).

    In Form einer Zeichenfolge entspricht language_term dem Wert der alias-Spalte in der syslanguages-Systemtabelle. Die Zeichenfolge muss in einfache Anführungszeichen eingeschlossen werden, wie z. B. 'language_term'. In Form einer Ganzzahl ist language_term der eigentliche Gebietsschemabezeichner, der die Sprache angibt. In Form eines Hexadezimalwertes ist language_term gleich 0x, gefolgt vom Hexadezimalwert des Gebietsschemabezeichners. Der Hexadezimalwert darf einschließlich führender Nullen acht Ziffern nicht überschreiten.

    Wird der Wert als Doppelbyte-Zeichensatz (Double-Byte Character Set, DBCS) angegeben, wird er von SQL Server in Unicode konvertiert.

    Ressourcen, wie die Wörtertrennung und die Wortstammerkennung, müssen für die mit language_term angegebene Sprache aktiviert sein. Wenn diese Ressourcen die angegebene Sprache nicht unterstützen, gibt SQL Server einen Fehler zurück.

    Bei Nicht-BLOB- und Nicht-XML-Spalten, die Textdaten in mehreren Sprachen umfassen, oder in den Fällen, in denen die Sprache des in den Spalten gespeicherten Textes unbekannt ist, verwenden Sie die neutrale Sprachressource (0x0). Für Dokumente, die in Spalten vom Typ XML oder BLOB gespeichert werden, wird die Sprachcodierung innerhalb des Dokuments bei der Indizierung verwendet. Beispiel: In XML-Spalten gibt das Attribut xml:lang in XML-Dokumenten die Sprache an. Zur Abfragezeit wird der Wert, der vorher in language_term angegeben wurde, die Standardsprache, die für Volltextabfragen verwendet wird, es sei denn language_term wird als Teil einer Volltextabfrage angegeben.

  • ,... n
    Gibt an, dass mehrere Spalten für den Volltextindex angegeben werden können. Wenn mehrere Spalten angegeben werden, trennen Sie die einzelnen Spalten mit einem Komma.
  • KEY INDEX index_name
    Der Name des eindeutigen Schlüsselindexes für table_name. KEY INDEX muss eine eindeutige Spalte mit einem Schlüssel sein, die nicht auf Null gesetzt werden kann. Wählen Sie als eindeutigen Volltextschlüssel stets den kleinsten eindeutigen Index aus. Um optimale Leistung zu erzielen, wird ein CLUSTERED-Index empfohlen.
  • ON fulltext_catalog_name
    Der Volltextkatalog, der für den Volltextindex verwendet wird. Der Katalog muss bereits in der Datenbank vorhanden sein. Diese Klausel ist optional. Wenn sie nicht angegeben wird, wird ein Standardkatalog verwendet. Ist kein Standardkatalog vorhanden, gibt SQL Server einen Fehler zurück.

    Die Dateigruppe von fulltext_catalog_name oder der Standardvolltextkatalog (falls kein Katalog angegeben ist) dürfen nicht READONLY oder OFFLINE sein. Andernfalls gibt SQL Server einen Fehler zurück.

  • WITH CHANGE_TRACKING {MANUAL | AUTO | OFF [ **,**NO POPULATION]}
    Gibt an, ob SQL Server eine Liste aller Änderungen an den indizierten Daten verwaltet. Datenänderungen mit WRITETEXT und UPDATETEXT werden nicht über die Änderungsprotokollierung erfasst.

    • MANUAL
      Gibt an, dass das Protokoll der Änderungsprotokollierung entweder über einen Zeitplan mithilfe des SQL Server-Agents oder manuell durch den Benutzer weitergegeben wird.
    • AUTO
      Gibt an, dass SQL Server automatisch den Volltextindex aktualisiert, sobald Daten in den zugeordneten Tabellen geändert werden. AUTO ist die Standardeinstellung.

      Hinweis Obwohl Änderungen automatisch weitergegeben werden können, werden diese Änderungen u. U. nicht sofort im Volltextindex wiedergegeben. Weitere Informationen zu Eigenschaften, die für die Überwachung des Volltextindexprozesses und für die Diagnose von Problemen bei der Volltextindizierung verwendet werden, finden Sie unter Abrufen von Volltext-Eigenschaftswerten mithilfe von Transact-SQL-Funktionen.

    • OFF [ **,**NO POPULATION]
      Gibt an, dass SQL Server keine Liste der Änderungen an den indizierten Daten verwaltet.

      Die Option NO POPULATION kann nur dann verwendet werden, wenn für CHANGE_TRACKING der Wert OFF festgelegt ist. Wenn NO POPULATION angegeben ist, füllt SQL Server einen Index nach dessen Erstellung nicht auf. Der Index wird erst aufgefüllt, wenn der Benutzer den ALTER FULLTEXT INDEX-Befehl mit einer der Klauseln START FULL oder INCREMENTAL POPULATION ausführt. Wird NO POPULATION nicht angegeben, füllt SQL Server einen Index nach seiner Erstellung auf.

Berechtigungen

Benutzer müssen über die REFERENCES-Berechtigung für den Volltextkatalog und ALTER-Berechtigung für die Tabelle oder Sicht verfügen oder Mitglied der festen Serverrolle sysadmin oder der festen Datenbankrollen db_owner bzw. db_ddladmin sein.

Beispiele

Im folgenden Beispiel wird ein Volltextindex für die HumanResources.JobCandidate-Tabelle erstellt.

USE AdventureWorks;
GO
CREATE UNIQUE INDEX ui_ukJobCand ON HumanResources.JobCandidate(JobCandidateID);
CREATE FULLTEXT CATALOG ft AS DEFAULT;
CREATE FULLTEXT INDEX ON HumanResources.JobCandidate(Resume) KEY INDEX ui_ukJobCand;
GO

Siehe auch

Verweis

ALTER FULLTEXT INDEX (Transact-SQL)
DROP FULLTEXT INDEX (Transact-SQL)
GRANT (Transact-SQL)

Andere Ressourcen

Volltextsuche

Hilfe und Informationen

Informationsquellen für SQL Server 2005

Änderungsverlauf

Version Verlauf

12. Dezember 2006

Neuer Inhalt:
  • Es wurde verdeutlicht, dass Volltextindizes auch auf indizierte Sichten angewendet werden können.
  • Dem Thema zu den Filtern wurde ein Link hinzugefügt, mit dem die TYPE COLUMN-Klausel erläutert werden soll.