FREETEXTTABLE (Transact-SQL)

Aktualisiert: 17. Juli 2006

Gibt eine Tabelle mit keiner, einer oder mehreren Zeilen für alle Spalten mit Zeichendatentypen zurück, deren Werte mit der Bedeutung, nicht aber mit dem genauen Wortlaut des Textes in freetext_string übereinstimmen. Auf FREETEXTTABLE kann in der FROM-Klausel einer SELECT-Anweisung wie auf einen regulären Tabellennamen verwiesen werden.

Abfragen, die FREETEXTTABLE verwenden, sind FREETEXT-Volltextabfragen, die für jede Zeile einen Relevanzrangfolgenwert (Relevance Ranking Value, RANK) und einen Volltextschlüssel (KEY) zurückgeben.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

FREETEXTTABLE (table , { column_name | (column_list) | * } 
          , 'freetext_string' 
     [ ,LANGUAGE language_term ] 
     [ ,top_n_by_rank ] )

Argumente

  • table
    Der Name der Tabelle, die für die Volltextabfrage gekennzeichnet wurde. table oder view kann ein ein-, zwei-, drei- oder vierteiliger Datenbankobjekt-Name sein. Bei der Abfrage einer Sicht kann nur eine volltextindizierte Basistabelle verwendet werden.

    Weitere Informationen finden Sie unter Transact-SQL-Syntaxkonventionen (Transact-SQL).

    table kann keinen Servernamen angeben und kann für Abfragen auf Verbindungsservern nicht verwendet werden.

  • column_name
    Der Name der zu durchsuchenden Spalte, die sich in table befindet. Spalten vom Typ char, varchar, nchar, nvarchar, text, ntext, image, xml und varbinary(max) sind gültige Spalten für die Volltextsuche.
  • column_list
    Gibt an, dass verschiedene, durch Komma getrennte Spalten angegeben werden können. column_list muss in Klammern eingeschlossen werden. Sofern nicht language_term angegeben ist, muss die Sprache aller Spalten von column_list identisch sein.
  • *
    Gibt an, dass alle für die Volltextsuche registrierten Spalten nach dem angegebenen freetext_string-Wert durchsucht werden. Wenn language_term nicht angegeben ist, muss die Sprache aller volltextindizierten Spalten in der Tabelle identisch sein.
  • freetext_string
    Der Text, nach dem in column_name gesucht werden soll. Es kann hierbei ein beliebiger Text aus Wörtern, Ausdrücken und Sätzen eingegeben werden. Übereinstimmungen werden dann generiert, wenn ein Begriff oder Formen eines Begriffs im Volltextindex gefunden werden.

    Im Gegensatz zur CONTAINS-Suchbedingung, in der AND ein Schlüsselwort ist, wird das Wort 'and' in freetext_string als Füllwort eingestuft und verworfen.

    Die Verwendung von WEIGHT, FORMSOF, Platzhaltern, NEAR und sonstiger Syntax ist nicht zulässig. Für freetext_string werden die Wörtertrennung und die Wortstammerkennung ausgeführt sowie der Thesaurus angewendet. Wenn freetext_string in doppelten Anführungszeichen eingeschlossen ist, wird nach der Übereinstimmung eines Ausdrucks gesucht; die Wortstammerkennung wird nicht ausgeführt, und der Thesaurus wird nicht angewendet.

  • LANGUAGE language_term
    Die Sprache, deren Ressourcen für die Wörtertrennung, die Wortstammerkennung und den Thesaurus sowie die Entfernung von Füllwörtern im Rahmen der FREETEXTTABLE-Abfrage verwendet werden. Dieser Parameter ist optional und kann als Zeichenfolge, ganze Zahl oder Hexadezimalwert entsprechend dem Gebietsschemabezeichner (Locale Identifier, LCID) einer Sprache angegeben werden. Wird language_term angegeben, wird die entsprechende Sprache auf alle Elemente der Suchbedingung angewendet. Wird kein Wert angegeben, wird die Volltextsprache der Spalte verwendet.

    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 ganzen Zahl 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 acht Ziffern nicht überschreiten, einschließlich führender Nullen.

    Wird das Format des Wertes als Doppelbyte-Zeichensatz (Double-Byte Character Set, DBCS) angegeben, wird er von Microsoft SQL Server in Unicode konvertiert.

    Ist die angegebene Sprache ungültig oder sind keine Ressourcen installiert, die dieser Sprache entsprechen, gibt SQL Server einen Fehler zurück. Geben Sie 0x0 als language_term an, um neutrale Sprachressourcen zu verwenden.

  • top_n_by_rank
    Wenn ein ganzzahliger Wert, n, angegeben wird, gibt FREETEXTTABLE nur die obersten n Übereinstimmungen zurück, wobei diese nach der Rangfolge sortiert werden.

    Wird zusätzlich zum FREETEXTTABLE-Prädikat eine Filterung ausgeführt, wird der Filter auf die obersten n Zeilen angewendet, und weniger als top_n_by_rank Zeilen werden zurückgegeben. Durch Aktivieren der Option precompute rank in der gespeicherten Prozedur sp_configure kann die Anzahl der Ausführungen von FREETEXTTABLE-Abfragen steigen, die den top_n_by_rank-Parameter verwenden. Weitere Informationen finden Sie unter sp_configure (Transact-SQL) und sp_fulltext_service (Transact-SQL).

Hinweise

FREETEXTTABLE verwendet die gleichen Suchbedingungen wie das FREETEXT-Prädikat.

Wie bei CONTAINSTABLE enthält die zurückgegebene Tabelle die Spalten KEY und RANK, auf die innerhalb der Abfrage verwiesen wird, um die entsprechenden Zeilen abzurufen und die Rangfolgenwerte zu verwenden.

FREETEXTTABLE wird nicht als Schlüsselwort erkannt, wenn der Kompatibilitätsgrad kleiner als 70 ist. Weitere Informationen finden Sie unter sp_dbcmptlevel (Transact-SQL).

Berechtigungen

FREETEXTTABLE kann nur von Benutzern aufgerufen werden, die entsprechende SELECT-Privilegien für die angegebene Tabelle oder die Spalten der Tabelle besitzen, auf die verwiesen wird.

Beispiele

Im folgenden Beispiel werden der Kategoriename und die Beschreibung aller Kategorien zurückgegeben, die sich auf sweet, candy, bread, dry oder meat beziehen.

ms177652.note(de-de,SQL.90).gifHinweis:
Zum Ausführen dieses Beispiels muss die Northwind-Datenbank installiert werden. Informationen zum Installieren der Northwind-Datenbank finden Sie unter Downloaden der Beispieldatenbanken Northwind und pubs.
USE Northwind;
SELECT FT_TBL.CategoryName 
    ,FT_TBL.Description
    ,KEY_TBL.RANK
FROM dbo.Categories AS FT_TBL 
    INNER JOIN FREETEXTTABLE(dbo.Categories, Description, 
        'sweetest candy bread and dry meat') AS KEY_TBL
        ON FT_TBL.CategoryID = KEY_TBL.[KEY];
GO

Im Folgenden Beispiel wird die Verwendung der Parameter LANGUAGElanguage_term und top_n_by_rank dargestellt.

USE Northwind;
SELECT FT_TBL.CategoryName 
    ,FT_TBL.Description
    ,KEY_TBL.RANK
FROM dbo.Categories AS FT_TBL 
    INNER JOIN FREETEXTTABLE(dbo.Categories, Description, 
        'sweetest candy bread and dry meat',LANGUAGE 'English',2) 
        AS KEY_TBL
        ON FT_TBL.CategoryID = KEY_TBL.[KEY];
GO
ms177652.note(de-de,SQL.90).gifHinweis:
Der LANGUAGE language_term -Parameter ist für die Verwendung des top_n_by_rank -Parameters nicht erforderlich.

Änderungsverlauf

Version Verlauf

17. Juli 2006

Neuer Inhalt:
  • Das Beispiel für das LANGUAGE-Argument wurde hinzugefügt.

Siehe auch

Verweis

CONTAINS (Transact-SQL)
CONTAINSTABLE (Transact-SQL)
FREETEXT (Transact-SQL)
Rowsetfunktionen (Transact-SQL)
SELECT (Transact-SQL)
WHERE (Transact-SQL)

Andere Ressourcen

Abfragen von SQL Server mithilfe der Volltextsuche
precompute rank (Option)

Hilfe und Informationen

Informationsquellen für SQL Server 2005