TurboSQL Guide

Volltext Suche

Top  Previous  Next

Volltextsuche ist die Suche nach einem beliebigen Wort in einem Datensatz. Diese Art der Suche ist für Memo- und WideMemo-Felder besonders nützlich, in denen das Suchen mit herkömmlichen Operatoren und Funktionen nicht das erwartete Resultat liefert oder zu lange dauert.

Die Volltextsuche unterliegt zwei Einschränkungen:

Es muss einen Volltext-Index für die Tabelle geben.
Eine Volltextsuche bezieht sich immer auf genau eine Tabelle (Es können aber mehrere Volltext-Suchbedingungen in einer WHERE-Klausel sein.).

Die Basis eines Volltext-Index ist das Wörterbuch, das eine normale Datenbank-Tabelle mit einem bestimmten Schema ist. Es enthält die Informationen über indizierte Wörter, ausgeschlossene Wörter, Wort-Relevanz, u.s.w. Sobald das Wörterbuch besteht, kann es für eine beliebige Zahl von Volltext-Indexen auf einer oder auf mehreren Tabellen benutzt werden.

Ab TurboDB 5, werden Volltext-Suchbedingungen in die WHERE Klausel der Abfrage eingebettet:

select * from SOFTWARE join VENDOR on SOFTWARE.VendorId = VENDOR.Id
where VENDOR.Country = 'USA' and (contains('office' in SOFTWARE.*) or contains('Minneapolis' in VENDOR.*))

Eine einfache Volltext-Suchbedingung sieht so aus:

contains('office -microsoft' in SOFTWARE.*)

die zutreffend ist, wenn irgendein Feld des Standard-Volltext-Index der Tabelle SOFTWARE das Wort office aber nicht das Wort microsoft enthält. Wenn sich die Abfrage auf nur eine Tabelle bezieht, kann dieses auch so geschrieben werden:

contains('office -microsoft' in *)

Wenn der Volltext-Suchausdruck mehr als ein Wort ohne den Bindestrich enthält, sucht TurboDB nach Datensätzen, die alle gegebenen Wörter enthalten.

contains('office microsoft' in SOFTWARE.*)

wird daher Datensätze finden, die beide Wörter, office und microsoft, in einem Feld des Standard-Volltext-Index der Tabelle enthalten.

Nach Wörter, die durch ein Pluszeichen getrennt sind, wird alternativ gesucht. Das Prädikat

contains('office star + open' in SOFTWARE.*)

findet Datensätze, die das Wort office und entweder star oder open beinhalten (oder beide).

Hinweise

Volltext-Indexe können mit der TurboSQL Anweisung CREATE FULLTEXTINDEX , mit einem der Datenbank-Management Werkzeuge (wie TurboDB5Viewer) oder mit den entsprechenden Methoden der jeweiligen TurboDB Komponenten erstellt werden.

Von TurboDB Tabellen-Level 3 auf Level 4 hat sich die Technologie der Volltext-Indizierung geändert. Die neue Implementierung ist sehr viel schneller und erlaubt sowohl gewartete Indexe als auch Relevanzen. Es wird dringend empfohlen Tabellen-Level 4 zu verwenden, wenn mit Volltext-Indexen gearbeitet werden soll. Die alte Volltextsuche wird eventuell entfernt.