Verwenden der Volltextsuche¶
Sie können Suchfunktionen verwenden, um Zeichendaten (Text) und IP-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 anhand der Suchsemantik mit den angegebenen Suchbegriffen ü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 aus einer bestimmten Spalte oder einem bestimmten Feld gemäß der Suchsemantik extrahiert wurden, gibt die Funktion TRUE zurück. Das SEARCH_MODE-Funktionsargument gibt einen der folgenden Suchmodi an:
'OR': Die Funktion verwendet disjunktive Semantik. Es gibt eine Übereinstimmung, wenn beliebige der aus den durchsuchten Spalten oder Felder extrahierten Token mit beliebigen der aus der Suchzeichenfolge extrahierten Token übereinstimmen. Wenn beispielsweise dersearch_string-Wert'blue red green'ist, gibt die Funktion TRUE für eine Zeile zurück, dieblueORredORgreenin einer/einem der durchsuchten Spalten oder Felder enthält.'AND': Die Funktion verwendet konjunktive Semantik. Es gibt eine Übereinstimmung, wenn die Token, die aus mindestens einer der Spalten oder Felder extrahiert wurden, mit allen aus der Zeichenfolge extrahierten Token übereinstimmen. Die übereinstimmenden Token müssen sich alle in einer einzigen Spalte oder einem einzigen Feld befinden. Sie können nicht auf mehrere Spalten oder Felder verteilt sein. Wenn beispielsweise dersearch_string-Wert'blue red green'ist, gibt die Funktion TRUE für eine Zeile zurück, dieblueANDredANDgreenin mindestens einer/einem der durchsuchten Spalten oder Felder enthält.'PHRASE': Die Funktion verwendet die Semantik der Phrasenübereinstimmung. Es gibt eine Übereinstimmung, wenn die Token, die aus mindestens einer der durchsuchten Spalten oder Felder extrahiert wurden, mit allen aus der Suchzeichenfolge extrahierten Token übereinstimmen, einschließlich der Reihenfolge und Umgebung der Token.Die Übereinstimmungssemantik ist die gleiche wie die konjunktive Semantik, mit Ausnahme der folgenden Unterschiede:
Die Reihenfolge der Token muss genau übereinstimmen. Wenn beispielsweise der
search_string-Wert'blue,red,green'ist, gibt die Funktion FALSE fürred,green,bluezurück.Es können keine zusätzlichen Token in die Suchdaten eingefügt werden. Wenn beispielsweise der
search_string-Wert'blue,red,green'ist, gibt die Funktion FALSE fürblue,yellow,red,greenzurück.
'EXACT': Die Funktion verwendet die Semantik der genauen Übereinstimmung. Es gibt eine Übereinstimmung, wenn die Token, die aus mindestens einer der durchsuchten Spalten oder Felder extrahiert wurden, genau mit allen aus der Suchzeichenfolge extrahierten Token übereinstimmen, einschließlich der Trennzeichen.Die Übereinstimmungsregeln sind die gleichen wie bei der Semantik der Phrasenübereinstimmung, mit Ausnahme der folgenden Unterschiede:
Die Trennzeichenfolgen zwischen den Token müssen genau übereinstimmen. Wenn beispielsweise der
search_string-Wert'blue,red,green'ist, gibt die Funktion TRUE für eine Zeile zurück, dieblue,red,greenin mindestens einer/einem der durchsuchten Spalten oder Felder enthält. Die Funktion gibt FALSE für Varianten wieblue|red|greenoderblue, red, greenzurück.Wenn ein Trennzeichen das erste oder letzte Zeichen im
search_string-Wert ist, wird das Trennzeichen beim Abgleich wie ein Zeichen behandelt. Daher können Trennzeichen links und rechts des ersten und letzten Trennzeichens zu einer Übereinstimmung führen. Wenn beispielsweise dersearch_string-Wert'[blue]'ist, gibt die Funktion TRUE fürfoo [blue] bar,[[blue]]und=[blue].zurück, aber nicht für(blue)oderfoo blue bar.
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 SEARCH_IP-Funktion findet gültige IPv4- und IPv6-Adressen in angegebenen Zeichenfolgenspalten aus einer oder mehreren Tabellen, einschließlich Feldern in den Spalten VARIANT. OBJECT und ARRAY. 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.