Volltextabfragen

Zum Schreiben von Volltextabfragen in Microsoft SQL Server 2005 müssen Sie wissen, wie die Transact-SQL-Prädikate CONTAINS und FREETEXT sowie die Rowsetwertfunktionen CONTAINSTABLE und FREETEXTTABLE verwendet werden.

Die Prädikate CONTAINS und FREETEXT können ausschließlich in einer WHERE-Klausel einer SELECT-Anweisung verwendet werden. Die Rowsetwertfunktionen CONTAINSTABLE und FREETEXTTABLE können in der FROM-Klausel einer SELECT-Anweisung verwendet werden.

Das CONTAINS-Prädikat unterstützt eine ausführliche Syntax, um Spalten mit Textdaten nach Folgendem zu durchsuchen:

  • Einem oder mehreren bestimmten Wörtern oder Ausdrücken (einfacher Begriff).
    Bei der Volltextsuche wird ein Wort als Token gewertet. Ein Token wird von der entsprechenden Wörtertrennung gemäß den linguistischen Regeln der angegebenen Sprache identifiziert. Ein gültiger Ausdruck kann aus mehreren Wörtern mit oder ohne Satzzeichen dazwischen bestehen. So ist z. B. "croissant" ein Wort, während "café au lait" ein Ausdruck ist. Solche Wörter und Ausdrücke werden als einfache Begriffe bezeichnet.
  • Den Flexionsformen eines bestimmten Wortes (Generierungsbegriff).
    Gehen wir davon aus, dass Sie nach der Flexionsform des Wortes "drive" suchen. Wenn mehrere Zeilen in der Tabelle die Wörter "drive", "drives", "drove", "driving" und "driven" enthalten, werden alle in das Resultset aufgenommen, da jedes dieser Wörter durch Flexion aus dem Wort "drive" generiert werden kann.
  • Den synonymen Formen eines bestimmten Wortes (Thesaurus).
    Wird einem Thesaurus beispielsweise ein Eintrag "{car, automobile, truck, van}" hinzugefügt, können Sie nach der Thesaurusform des Wortes "car" suchen. Alle Zeilen in der abgefragten Tabelle, die die Wörter "automobile", "truck", "van" oder "car" enthalten, finden sich im Resultset, weil jedes dieser Wörter zum Synonymerweiterungssatz gehört, der das Wort "car" enthält. Weitere Informationen zur Struktur von Thesaurusdateien finden Sie unter Konfigurieren von Thesaurusdateien.
  • Einem Wort oder Ausdruck, bei dem die Wörter mit dem angegebenen Text beginnen (Präfixbegriff).
    Im Falle eines Ausdrucks wird jedes Wort innerhalb des Ausdrucks als Präfix interpretiert. Der Begriff "auto tran*" entspricht z. B. "automatic transmission" und "automobile transducer", aber nicht "automatic motor transmission".
  • Wörtern oder Ausdrücken mit gewichteten Werten (gewichteter Begriff).
    Sie können beispielsweise in einer Abfrage, in der nach mehreren Begriffen gesucht wird, jedem Suchwort einen Gewichtungswert zuweisen, der dessen Bedeutung im Vergleich zu den anderen Wörtern in der Suchbedingung angibt. In den Ergebnissen für diesen Abfragetyp werden die relevantesten Zeilen zuerst zurückgegeben, entsprechend der relativen Gewichtung, die Sie den Suchwörtern zugewiesen haben.
  • Einem Wort oder Ausdruck in der Nähe eines anderen Wortes oder Ausdrucks (NEAR-Begriff).
    Sie suchen beispielsweise die Zeilen, in denen das Wort "ice" sich in der Nähe des Wortes "hockey" oder der Ausdruck "ice skating" sich in der Nähe des Ausdrucks "ice hockey" befindet.

In einem CONTAINS-Prädikat können mehrere dieser Begriffe mithilfe der booleschen Operatoren AND, OR und AND NOT kombiniert werden, um z. B. alle Zeilen mit "latte" und "New York-style bagel" in derselben volltextindizierten Spalte zu finden. Begriffe können durch AND NOT negiert werden, beispielsweise: "bagel" AND NOT "cream cheese".

Wenn Sie CONTAINS verwenden, sollten Sie beachten, dass SQL Server Füllwörter in den Suchkriterien ignoriert. Füllwörter sind Wörter wie Artikel ("ein"), Konjunktionen ("und") oder Hilfsverben ("ist"), die möglicherweise häufig vorkommen, jedoch bei der Suche nach bestimmtem Text nicht hilfreich sind. Weitere Informationen zu Füllwörtern finden Sie unter Füllwörter.

Siehe auch

Konzepte

Abfragen von SQL Server mithilfe der Volltextsuche

Andere Ressourcen

CONTAINS (Transact-SQL)

Hilfe und Informationen

Informationsquellen für SQL Server 2005