使用全文搜索¶
您可以使用搜索功能在一个或多个表的指定列中查找字符数据(文本)和 IPv4 地址,包括 VARIANT、OBJECT 和 ARRAY 列中的字段。此功能根据给定的搜索词列表在指定的列或字符串中搜索文本。如果文本与基于搜索语义的指定搜索词匹配,则函数返回 TRUE。
在大多数情况下,调用 SEARCH 函数的方法是在 SELECT 语句的 SELECT 列表或 WHERE 子句中指定该函数。如果该函数作为 WHERE 子句过滤器使用,当函数返回 TRUE 时,查询将返回行。
SEARCH 功能无需设置,也不需要额外权限。如果您使用的角色具有访问列中数据的权限,您可以通过使用 SEARCH 函数来搜索该数据。
接下来的部分包含有关 SEARCH 函数的更多信息,以及在使用它时优化查询性能的相关内容:
使用 SEARCH 函数¶
SEARCH 函数 在一个或多个表中查找指定列中的字符数据(文本),包括 VARIANT、OBJECT 和 ARRAY 列中的字段。
当您使用 SEARCH 函数时,文本分析器将文本分解为 标记,这些是文本的离散单位,例如单词或数字。如果您不指定分析器,则会应用默认分析器。分析器从搜索词和数据中提取标记。
如果从搜索项中提取的令牌与根据搜索语义从指定列或字段中提取的令牌匹配,则函数返回 TRUE。SEARCH_MODE 函数参数为搜索语义指定了 'OR'
(分离式)或 'AND'
(连接式):
当指定
'OR'`(默认)时,如果从被搜索列或字段中提取的 :emph:`任何
令牌与从搜索字符串中提取的 任何 令牌相匹配,则会出现匹配。例如,如果search_string
值为'blue red green'
,则对于在被搜索的任何列或字段中包含blue
ORred
ORgreen
的行,函数将返回 TRUE。当指定
'AND'
时,如果从 至少一个 被搜索列或字段中提取的令牌与从搜索字符串中提取的 所有 令牌相匹配,则会出现匹配。匹配的词元必须都在一列或一个字段中;不能分散在多列或多个字段中。例如,如果search_string
值为'blue red green'
,则对于在至少一个被搜索的列或字段中包含blue
ANDred
ANDgreen
的行,函数返回 TRUE。
以下示例使用默认 SEARCH_MODE ('OR'
) 和默认分析器在文本 leopard
中搜索字符串 snow leopard
:
SELECT SEARCH('leopard', 'snow leopard');
+-----------------------------------+
| SEARCH('LEOPARD', 'SNOW LEOPARD') |
|-----------------------------------|
| True |
+-----------------------------------+
以下示例在文本 lion
中搜索字符串 snow leopard
:
SELECT SEARCH('lion', 'snow leopard');
+--------------------------------+
| SEARCH('LION', 'SNOW LEOPARD') |
|--------------------------------|
| False |
+--------------------------------+
以下示例在文本 leopard
中搜索字符串 snow leopard
,并指定 SEARCH_MODE 参数为 'AND'
:
SELECT SEARCH('leopard', 'snow leopard', search_mode => 'AND');
+---------------------------------------------------------+
| SEARCH('LEOPARD', 'SNOW LEOPARD', SEARCH_MODE => 'AND') |
|---------------------------------------------------------|
| False |
+---------------------------------------------------------+
有关此功能和其他示例的更多信息,请参阅 SEARCH。
使用 SEARCH_IP 函数¶
SEARCH_IP 函数 在一个或多个表中查找指定字符-字符串列中的有效 IPv4 地址,包括 VARIANT、OBJECT 和 ARRAY 列中的字段。搜索基于您指定的单个 IP 地址。如果此 IP 地址完全匹配指定列或字段中的 IP 地址,函数将返回 TRUE。
以下示例在文本 192.0.2.146
中搜索 IP 地址 10.10.10.1
:
SELECT SEARCH_IP('192.0.2.146','10.10.10.1');
+---------------------------------------+
| SEARCH_IP('192.0.2.146','10.10.10.1') |
|---------------------------------------|
| False |
+---------------------------------------+
有关此功能和其他示例的更多信息,请参阅 SEARCH_IP。
优化使用 SEARCH 函数的查询¶
为了提高该使用该函数的查询性能,您可以在表中的特定列或列集上选择性地 启用 FULL_TEXT 搜索优化。当您启用搜索优化时,将建立并维护一个新的 搜索访问路径。