---
title: "全文查询 - OceanBase 数据库 V4.4.2 | OceanBase 文档中心"
description: 全文查询 全文查询是指在文本数据中进行全文搜索或检索的操作。全文查询能够更全面地搜索整个文本，并返回与搜索条件匹配的结果。 说明 对于 OceanBase 数据库 V4.4.2 版本，Oracle 模式从 V4.4.2 BP2 版本开始支持创建全文索引。 语法 使用以下语句进行全文索引查询，指定全文索引列，查找与 s…
---
切换语言

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

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

# 全文查询

更新时间：2026-07-16 19:52:04

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

全文查询是指在文本数据中进行全文搜索或检索的操作。全文查询能够更全面地搜索整个文本，并返回与搜索条件匹配的结果。

#### 说明

对于 OceanBase 数据库 V4.4.2 版本，Oracle 模式从 V4.4.2 BP2 版本开始支持创建全文索引。

## 语法

使用以下语句进行全文索引查询，指定全文索引列，查找与 `search_query` 的匹配程度，返回结果为非负数的 `DOUBLE`，表示该行与 `search_query` 的相关程度，0 表示没有相关性。

```sql
CONTAINS(indexed_column, 'search_query' [, score_label])

SCORE(score_label)

```

**参数说明：**

- `indexed_column`：表示全文索引的列名。
 - `search_query`：`VARCHAR2` 类型或 `CLOB` 类型，表示需要搜索的关键字或短语。支持搜索操作符如下：

     - `空格`：表示连续短语匹配，按顺序匹配紧邻出现的词。例如 `'word1 word2'`。支持使用双引号 `""` 或大括号 `{}` 的转义，例如搜索连续短语 "law and order"，直接写 `'law and order'` 会被解析为 `law AND order`（逻辑与），解决方法：

           - 使用大括号：`'{law and order}'`。
           - 使用双引号：`'"law and order"'`。  

  #### 说明

  如果 `search_query` 参数的查询内容在对应分词器下产生的分词数量过多，可能会导致系统资源消耗增加、响应变慢，甚至影响查询性能。建议保持查询简洁、合理，以获得最佳执行效率。
 - `score_label`：可选参数，`NUMBER` 类型，表示返回结果的匹配编号。
 - `SCORE()`：可选参数，`NUMBER` 类型，与 `score_label` 结合使用，`score_label` 必须是为 `CONTAINS` 指定的 `score_label`，`NUMBER` 类型，用来输出`CONTAINS` 的匹配得分（越接近相关性越高）。

## 使用限制及注意事项

- `indexed_column` 不存在时，会报错。
 - `indexed_column` 未创建全文索引时，会报错。
 - `search_query` 为 `NULL` 时，会报错。例如 `SELECT col1 FROM tbl1 WHERE CONTAINS(col2, NULL, 1) > 0;`。
 - `search_query` 为空字符串时，返回空。例如 `SELECT col1 FROM tbl1 WHERE CONTAINS(col2, '', 1) > 0;`。
 - `search_query` 为全空格时，返回空。例如 `SELECT col1 FROM tbl1 WHERE CONTAINS(col2, ' ', 1) > 0;`。
 - `score_label` 为负数时，会报错。例如 `SELECT col1 FROM tbl1 WHERE CONTAINS(col2, 'OceanBase', -1) > 0;`。
 - `SCORE` 标签未定义时，会报错。例如 `SELECT col1 FROM tbl1 WHERE CONTAINS(col2, 'OceanBase', 1) > 0 ORDER BY SCORE(999);`。
 - `SCORE` 出现在无 `CONTAINS` 上下文时，会报错。例如 `SELECT SCORE(1) FROM tbl1;`。
 - 不支持在 `GROUP BY`、`HAVING` 子句中使用 `SCORE`。
 - `CONTAINS` 未比较时，会报错。例如 `SELECT col1 FROM tbl1 WHERE CONTAINS(col2, 'OceanBase', 1);`。
 - `CONTAINS` 使用小于、等于或小于等于的比较时，会报错。例如 `SELECT col1 FROM tbl1 WHERE CONTAINS(col2, 'OceanBase', 1) <= 0;`。
 - 带全文 filter 的连表查询/表重命名会报错时，会报错。例如 `SELECT SCORE(1) FROM tbl2 t1 WHERE CONTAINS(t1.col2, 'OceanBase', 1) >0;`。

## 示例

1. 创建表 `tbl1`。

   ```shell
   obclient> CREATE TABLE tbl1(
       col1 INT,
       col2 CHAR(50),
       col3 VARCHAR2(500));

   ```
 2. 创建全文索引 `ft_idx1_tbl1`。

   ```shell
   obclient> CREATE INDEX ft_idx1_tbl1 ON tbl1(col2)
       INDEXTYPE IS CTXSYS.CONTEXT
       PARAMETERS('LEXER SPACE')
       LOCAL;

   ```
 3. 创建全文索引 `ft_idx2_tbl1`。

   ```shell
   obclient> CREATE INDEX ft_idx2_tbl1 ON tbl1(col3)
       INDEXTYPE IS CTXSYS.CONTEXT
       PARAMETERS('LEXER SPACE')
       LOCAL;

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

   ```sql
   obclient> 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

   ```
 5. 使用 `CONTAINS` 查询。

   ```shell
   obclient> SELECT *
       FROM tbl1
       WHERE CONTAINS(col2, 'OceanBase', 1) > 0;

   ```

   返回结果如下：

   ```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

   ```
 6. 使用 `CONTAINS` 查询，并根据 `SCORE` 排序。

   ```shell
   obclient> SELECT col1, col2, col3, SCORE(1)
       FROM tbl1
       WHERE CONTAINS(col2, 'Database', 1) > 0
       AND col1 >= 2
       ORDER BY SCORE(1) DESC;

   ```

   返回结果如下：

   ```shell
   +------+----------------------------------------------------+---------------------------------------------+------------------------+
   | COL1 | COL2                                               | COL3                                        | SCORE(1)               |
   +------+----------------------------------------------------+---------------------------------------------+------------------------+
   |    3 | Database Management                                | Learn about SQL and database administration | 1.259496819494492E+000 |
   +------+----------------------------------------------------+---------------------------------------------+------------------------+
   1 row in set

   ```
 7. 多个查询，并使用 `score_label` 结合 `SCORE` 输出结果。

   ```shell
   obclient> SELECT col1, col2, col3, SCORE(10), SCORE(20)
       FROM tbl1
       WHERE CONTAINS (col2, 'Database', 10) > 0
       OR CONTAINS (col3, 'OceanBase', 20) > 0
       ORDER BY SCORE(10), SCORE(20);

   ```

   返回结果如下：

   ```shell
   +------+----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------+------------------------+-------------------------+
   | COL1 | COL2                                               | COL3                                                                                                                | SCORE(10)              | SCORE(20)               |
   +------+----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------+------------------------+-------------------------+
   |    2 | OceanBase                                          | OceanBase Database is a native, enterprise-level distributed database developed independently by the OceanBase team |                      0 | 1.1331643117640413E+000 |
   |    3 | Database Management                                | Learn about SQL and database administration                                                                         | 1.259496819494492E+000 |                       0 |
   +------+----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------+------------------------+-------------------------+
   2 rows in set

   ```

## 相关文档

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

 上一篇 下一篇 ![有帮助](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) 咨询热线
