Verwenden der Volltextsuche¶
Sie können Suchfunktionen verwenden, um Zeichendaten (Text) und IPv4-Adressen in bestimmten Spalten aus einer oder mehreren Tabellen zu finden, einschließlich Felder in den Spalten VARIANT, OBJECT und ARRAY. Diese Funktion durchsucht den Text in bestimmten Spalten oder Zeichenfolgen auf der Grundlage einer Liste vorgegebener Suchbegriffe. Die Funktion gibt TRUE zurück, wenn der Text mit den angegebenen Suchbegriffen auf der Grundlage der Suchsemantik übereinstimmt.
In den meisten Fällen rufen Sie die Funktion SEARCH auf, indem Sie sie in der SELECT-Liste oder in der WHERE-Klausel einer SELECT-Anweisung angeben. Wenn die Funktion als WHERE-Klausel-Filter verwendet wird, gibt die Abfrage Zeilen zurück, wenn die Funktion TRUE zurückgibt.
Die Funktion SEARCH erfordert kein Setup und keine zusätzlichen Berechtigungen. Wenn Sie eine Rolle verwenden, die über die Berechtigung zum Zugriff auf die Daten in einer Spalte verfügt, können Sie mit der Funktion SEARCH nach diesen Daten suchen.
In den nächsten Abschnitten finden Sie weitere Informationen über die Funktion SEARCH und über die Optimierung der Leistung von Abfragen, wenn Sie sie verwenden:
Verwenden der Funktion SEARCH¶
Die Funktion SEARCH findet Zeichendaten (Text) in angegebenen Spalten aus einer oder mehreren Tabellen, einschließlich Feldern in VARIANT-, OBJECT- und ARRAY-Spalten.
Wenn Sie die Funktion SEARCH verwenden, zerlegt ein Textanalysator den Text in Token, d. h. diskrete Texteinheiten, wie z. B. Wörter oder Zahlen. Es wird ein Standardanalysator verwendet, wenn Sie keinen angeben. Der Analysator extrahiert Token sowohl aus den Suchbegriffen als auch aus den Daten.
Wenn die aus den Suchbegriffen extrahierten Token mit den Token übereinstimmen, die gemäß der Suchsemantik aus einer angegebenen Spalte oder einem Feld extrahiert wurden, gibt die Funktion TRUE zurück. Das Funktionsargument SEARCH_MODE gibt entweder 'OR'
(disjunktiv) oder 'AND'
(konjunktiv) für die Suchsemantik an:
Wenn
'OR'
(Standard) angegeben ist, liegt eine Übereinstimmung vor, wenn beliebige der aus den durchsuchten Spalten oder Feldern extrahierten Tokens mit beliebigen der aus der Suchzeichenfolge extrahierten Tokens übereinstimmen. Wenn beispielsweise der Wertsearch_string
'blue red green'
ist, gibt die Funktion TRUE für eine Zeile zurück, dieblue
ORred
ORgreen
in einer der gesuchten Spalten oder Felder enthält.Wenn
'AND'
angegeben wird, liegt eine Übereinstimmung vor, wenn die aus extrahierten Token in mindestens einer der durchsuchten Spalten oder Felder mit allen der aus dem Suchstring extrahierten Token übereinstimmen. Die übereinstimmenden Token müssen sich alle in einer Spalte oder einem Feld befinden; sie können nicht über mehrere Spalten oder Felder verteilt sein. Wenn zum Beispiel der Wertsearch_string
'blue red green'
ist, gibt die Funktion TRUE für eine Zeile zurück, dieblue
ANDred
ANDgreen
in mindestens einer der gesuchten Spalten oder Felder enthält.
Das folgende Beispiel sucht nach der Zeichenfolge snow leopard
im Text leopard
mit der Vorgabe SEARCH_MODE ('OR'
) und dem Standard-Analysator:
SELECT SEARCH('leopard', 'snow leopard');
+-----------------------------------+
| SEARCH('LEOPARD', 'SNOW LEOPARD') |
|-----------------------------------|
| True |
+-----------------------------------+
Das folgende Beispiel sucht nach der Zeichenfolge snow leopard
im Text lion
:
SELECT SEARCH('lion', 'snow leopard');
+--------------------------------+
| SEARCH('LION', 'SNOW LEOPARD') |
|--------------------------------|
| False |
+--------------------------------+
Das folgende Beispiel sucht nach der Zeichenfolge snow leopard
im Text leopard
und gibt 'AND'
für das Argument SEARCH_MODE an:
SELECT SEARCH('leopard', 'snow leopard', search_mode => 'AND');
+---------------------------------------------------------+
| SEARCH('LEOPARD', 'SNOW LEOPARD', SEARCH_MODE => 'AND') |
|---------------------------------------------------------|
| False |
+---------------------------------------------------------+
Weitere Informationen über diese Funktion und zusätzliche Beispiele finden Sie unter SEARCH.
Verwenden der Funktion SEARCH_IP¶
Die Funktion SEARCH_IP findet gültige IPv4-Adressen in angegebenen Zeichenfolgenspalten aus einer oder mehreren Tabellen, einschließlich Feldern in VARIANT-, OBJECT- und ARRAY-Spalten. Die Suche basiert auf einer einzelnen IP-Adresse, die Sie angeben. Wenn diese IP-Adresse genau mit einer IP-Adresse in der angegebenen Spalte oder dem angegebenen Feld übereinstimmt, gibt die Funktion TRUE zurück.
Das folgende Beispiel sucht nach der IP-Adresse 10.10.10.1
im Text 192.0.2.146
:
SELECT SEARCH_IP('192.0.2.146','10.10.10.1');
+---------------------------------------+
| SEARCH_IP('192.0.2.146','10.10.10.1') |
|---------------------------------------|
| False |
+---------------------------------------+
Weitere Informationen über diese Funktion und zusätzliche Beispiele finden Sie unter SEARCH_IP.
Optimierung von Abfragen, die die Funktion SEARCH verwenden¶
Um die Leistung von Abfragen, die diese Funktion verwenden, zu verbessern, können Sie optional die FULL_TEXT-Suchoptimierung für eine bestimmte Spalte oder eine Reihe von Spalten in einer Tabelle aktivieren. Wenn Sie die Suchoptimierung aktivieren, wird ein neuer Suchzugriffspfad erstellt und gewartet.