---
title: "全文查询 - OceanBase 数据库 V4.3.5 | OceanBase 文档中心"
description: 全文查询 全文查询是指在文本数据中进行全文搜索或检索的操作。它用于查找包含特定关键词、短语或文本表达式的文本内容。全文查询能够更全面地搜索整个文本，并返回与搜索条件匹配的结果。 语法 使用以下语法进行全文索引查询时，可以根据指定的列和关键字或短语来执行全文搜索，并可以选择使用特定的搜索修饰符来调整搜索模式（即搜索条件…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.3.5 LTS

# 全文查询

更新时间：2026-07-15 20:42:46

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.3.5/zh-CN/700.reference/500.sql-reference/100.sql-syntax/200.common-tenant-of-mysql-mode/500.queries-and-subqueries-of-mysql-mode/400.full-text-query-of-mysql-mode.md)  

全文查询是指在文本数据中进行全文搜索或检索的操作。它用于查找包含特定关键词、短语或文本表达式的文本内容。全文查询能够更全面地搜索整个文本，并返回与搜索条件匹配的结果。

## 语法

使用以下语法进行全文索引查询时，可以根据指定的列和关键字或短语来执行全文搜索，并可以选择使用特定的搜索修饰符来调整搜索模式（即搜索条件或规则）。

```sql
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 或者有嵌套子句。

            #### 说明

            对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持 `IN BOOLEAN MODE`。

      **示例如下：**

           1. 输出句子必须包含 computer。

             ```sql
             SELECT * FROM my_table WHERE MATCH (doc) AGAINST ("+computer" IN BOOLEAN MODE);

             ```
           2. 输出句子必须包含 computer，且一定不包含 weather。

             ```sql
             SELECT * FROM my_table WHERE MATCH (doc) AGAINST ("+computer -weather" IN BOOLEAN MODE);

             ```
           3. 输出句子必须包含 computer，有 oceanbase 更匹配。

             ```sql
             SELECT * FROM my_table WHERE MATCH (doc) AGAINST ("+computer oceanbase" IN BOOLEAN MODE);

             ```

更多 `MATCH AGAINST` 表达式的介绍，参见 [MATCH AGAINST](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002017607)。

## 向量化查询

对于包含全文索引的查询，支持选择向量化或非向量化，可以使用 `/*+ opt_param('rowsets_enabled', '[true | false]')*/` Hint 开启/关闭向量化。

#### 注意

未指定 Hint 时，是否开启向量化受向量化引擎系统参数配置影响，默认为开启。

**示例如下：**

- 开启向量化查询。

  ```sql
  SELECT /*+ opt_param('rowsets_enabled', 'true') */ title, body
  FROM articles
  WHERE MATCH(title, body) AGAINST('tutorial');

  ```
 - 关闭向量化查询。

  ```sql
  SELECT /*+ opt_param('rowsets_enabled', 'false') */ title, body
  FROM articles
  WHERE MATCH(title, body) AGAINST('tutorial');

  ```

## 示例

1. 创建表 `tbl1`，同时创建全文索引 `full_idx1_tbl1`。

   ```sql
   CREATE TABLE tbl1(col1 INT PRIMARY KEY, col2 VARCHAR(100), col3 TEXT, FULLTEXT INDEX full_idx1_tbl1(col2, col3));

   ```
 2. 向表 `tbl1` 中添加测试数据。

   ```sql
   INSERT INTO tbl1 (col1, col2, col3) VALUES (1, 'Hello World', 'This is a test'),
       (2, 'OceanBase', 'OceanBase Database is a native, enterprise-level distributed database developed independently by the OceanBase team'),
       (3, 'Database Management', 'Learn about SQL and database administration'),
       (4, 'Full Text Searching', 'Master the art of full text searching');

   ```

   返回结果如下：

   ```shell
   Query OK, 4 rows affected
   Records: 4  Duplicates: 0  Warnings: 0

   ```
 3. 通过在 `MATCH` 子句指定对表 `tbl1` 中的 `col2` 列和 `col3` 列进行搜索，搜索的关键字是 'OceanBase'。同时，采用了搜索修饰符 `IN NATURAL LANGUAGE MODE`，表示使用自然语言搜索模式进行搜索。

```sql
SELECT * FROM tbl1
WHERE MATCH (col2, col3) AGAINST ('OceanBase' IN NATURAL LANGUAGE MODE);

```

返回结果如下：

```shell
+------+-----------+---------------------------------------------------------------------------------------------------------------------+
| col1 | col2      | col3                                                                                                                |
+------+-----------+---------------------------------------------------------------------------------------------------------------------+
|    2 | OceanBase | OceanBase Database is a native, enterprise-level distributed database developed independently by the OceanBase team |
+------+-----------+---------------------------------------------------------------------------------------------------------------------+
1 row in set

```

## 相关文档

- [创建索引](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002015436)
 - [全文索引](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002016782)

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
