全文查询
全文查询是指在文本数据中进行全文搜索或检索的操作。它用于查找包含特定 关键词、短语或文本表达式的文本内容。全文查询能够更全面地搜索整个文本,并返回与搜索条件匹配的结果。
语法
使用以下语法进行全文索引查询时,可以根据指定的列和关键字或短语来执行全文搜索,并可以选择使用特定的搜索修饰符来调整搜索模式(即搜索条件或规则)。
MATCH (column_name [, column_name ...]) AGAINST (expr [search_modifier])
search_modifier:
IN NATURAL LANGUAGE MODE
| IN BOOLEAN MODE
相关参数说明如下:
-
column_name:指定要进行全文搜索的列。如果要列出多个列,列之间需要使用英文逗号分隔。 -
expr:指定要搜索的关键字或短语。 -
search_modifier:可选项,用来指定搜索模式。取值如下:-
IN NATURAL LANGUAGE MODE:默认值,用于指定使用自然语言搜索模式进行搜索。 -
IN BOOLEAN MODE:用于指定使用布尔模式进行搜索。当前版本支持三种最常用的布尔运算符,以及运算嵌套,具体如下:-
+:表示AND,交集。 -
-:表示非,差集。 -
无操作符号:单独使用时表示
OR,并集,如A B表示A OR B。和符号混用会让存在的句子相关性变高,但会失去OR的语意,如+A B时,表示必须有 A,并计算句子中 A 和 B 的相关性。 -
():表示运算嵌套。外层无符号时,有OR的语意,如+A (嵌套子句),表示必须有 A 或者有嵌套子句。
示例如下:
-
输出句子必须包含 computer。
SELECT * FROM my_table WHERE MATCH (doc) AGAINST ("+computer" IN BOOLEAN MODE); -
输出句子必须包含 computer,且一定不包含 weather。
SELECT * FROM my_table WHERE MATCH (doc) AGAINST ("+computer -weather" IN BOOLEAN MODE); -
输出句子必须包含 computer,有 oceanbase 更匹配。
SELECT * FROM my_table WHERE MATCH (doc) AGAINST ("+computer oceanbase" IN BOOLEAN MODE);
-
-
更多 MATCH AGAINST 表达式的介绍,参见 MATCH AGAINST。