Übersicht über die Volltextsuche

Bei Volltextabfragen werden linguistische Suchvorgänge für Textdaten in Volltextindizes ausgeführt, indem sie nach den Regeln einer bestimmten Sprache, z. B. Deutsch oder Japanisch, in Wörter und Ausdrücke zerlegt werden. Volltextabfragen können einfache Wörter und Ausdrücke oder mehrere Formen eines Worts bzw. Ausdrucks enthalten.

Volltextsuchen sind in verschiedensten Geschäftsszenarien anwendbar. Beispiele: E-Business – Artikel auf einer Website suchen, Rechtsanwaltskanzleien – Fallbeschreibungen in einem Rechtsdatenrepository suchen, Personalabteilungen – Stellenbeschreibungen mit gespeicherten Lebensläufen vergleichen. Die Grundaufgaben bei der Verwaltung und Entwicklung von Volltextsuchfunktionen sind unabhängig vom Geschäftsszenario gleich. Im jeweiligen Geschäftsszenario können Volltextsuchen und Abfragen jedoch den Geschäftszielen entsprechend angepasst werden. In einem E-Business kann beispielsweise die Leistungserhöhung wichtiger sein als die Sortierung der Ergebnisse, die Rückrufgenauigkeit (wie viele der vorhandenen Treffer mit einer Volltextsuche tatsächlich zurückgegeben werden) oder die Unterstützung mehrerer Sprachen. In einer Rechtsanwaltskanzlei kann die Rückgabe jedes möglichen Treffers (Gesamtrückruf von Informationen) den wichtigsten Aspekt bilden.

Übersicht über die Konfiguration einer Datenbank für die Volltextsuche

Für jedes Szenario führt ein Datenbankadministrator die folgenden Grundschritte zum Konfigurieren von Tabellenspalten in einer Datenbank für die Volltextsuche aus:

  1. Erstellen Sie einen Volltextkatalog.

  2. In jeder Tabelle, die durchsucht werden soll, erstellen Sie einen Volltextindex nach:

    1. Geben Sie alle Textspalten an, die Sie in den Volltextindex aufnehmen möchten.

    2. Wenn eine angegebene Spalte als Binärdaten (varbinary(max)-Daten oder image-Daten) gespeicherte Dokumente enthält, müssen Sie eine Tabellenspalte (die Typspalte) angeben, die den Typ jedes Dokuments in der zu indizierenden Spalte angibt.

    3. Geben Sie die Sprache an, die für die Volltextsuche für die Dokumente in der Spalte verwendet werden soll.

    4. Wählen Sie den Änderungsnachverfolgungsmechanismus aus, der für den Volltextindex verwendet werden soll, um Änderungen in der Basistabelle und deren Spalten nachzuverfolgen.

Die Volltextsuche unterstützt durch Verwendung der folgenden linguistischen Komponenten mehrere Sprachen: Wörtertrennungen und Wortstammerkennungen, Stopplisten mit Stoppwörtern (auch als Füllwörter bezeichnet) und Thesaurusdateien. Thesaurusdateien und in manchen Fällen auch Stopplisten müssen von einem Datenbankadministrator konfiguriert werden. Jede Thesaurusdatei unterstützt alle Volltextindizes der entsprechenden Sprache, und jede Stoppliste kann beliebig vielen Volltextindizes zugeordnet werden.

Weitere Informationen finden Sie unter Verwalten der Volltextsuche.

Übersicht über Volltextabfragen

Nachdem die Spalten einem Volltextindex hinzugefügt wurden, können Anwendungen und Benutzer Volltextabfragen für den Text in den Spalten ausführen. Mit diesen Abfragen kann nach Folgendem gesucht werden:

  • Mindestens ein Wort oder Ausdruck (einfacher Begriff)

  • Ein Wort oder Ausdruck, bei dem die Wörter mit dem angegebenen Text beginnen (Präfixbegriff)

  • Flexionsformen eines bestimmten Worts (Generierungsbegriff)

  • Ein Wort oder Ausdruck in der Nähe eines anderen Worts oder Ausdrucks (NEAR-Begriff)

  • Synonyme Formen eines bestimmten Worts (Thesaurus).

  • Wörter oder Ausdrücke mit gewichteten Werten (gewichteter Begriff)

In allen Volltextabfragen werden einige wenige Transact-SQL-Prädikate (CONTAINS und FREETEXT) und -Funktionen (CONTAINSTABLE und FREETEXTTABLE) verwendet. Jedoch wird die genaue Struktur der Volltextabfragen jeweils von den Suchzielen eines Geschäftsszenarios beeinflusst. Beispiel:

  • E-Business: Suche nach einem Produkt auf einer Website:

    SELECT product_id FROM products WHERE CONTAINS(product_description, ”Snap Happy 100EZ” OR FORMSOF(THESAURUS,’Snap Happy’) OR ‘100EZ’) AND product_cost<200 …
    
  • Stellenvergabeszenario: Suche nach Stellenbewerbern mit Erfahrungen in der Arbeit mit SQL Server:

    SELECT candidate_name,SSN FROM candidates WHERE CONTAINS(candidate_resume,”SQL Server”) AND candidate_division =DBA
    

Weitere Informationen finden Sie unter Abfragen von SQL Server mithilfe der Volltextsuche.

Vergleich zwischen LIKE und der Volltextsuche

Im Gegensatz zur Volltextsuche verarbeitet das LIKE-Transact-SQL-Prädikat ausschließlich Zeichenmuster. Darüber hinaus können Sie mit dem LIKE-Prädikat keine formatierten Binärdaten abfragen. Eine LIKE-Abfrage in umfangreichen unstrukturierten Textdaten ist sehr viel langsamer als eine entsprechende Volltextabfrage in denselben Daten. Eine LIKE-Abfrage für Millionen von Zeilen von Textdaten kann Minuten in Anspruch nehmen; eine Volltextabfrage kann dagegen in Sekunden oder weniger für dieselben Daten ein Ergebnis liefern, je nach Anzahl der zurückgegebenen Zeilen.