

# 在 Babelfish 中使用全文搜索
<a name="babelfish-postgres-fulltextsearch"></a>

从版本 4.0.0 开始，Babelfish 为全文搜索（FTS）提供有限支持。FTS 是关系数据库中的一项强大功能，可实现对文本密集型数据的高效搜索和索引。借助该功能，用户能够执行复杂的文本搜索并快速检索相关结果。FTS 对于处理大量文本数据的应用程序特别有价值，例如内容管理系统、电子商务平台和文档归档。

## 了解 Babelfish 全文搜索支持的功能
<a name="babelfish-postgres-fulltextsearch-support"></a>

Babelfish 支持以下全文搜索功能：
+ CONTAINS 子句：
  + 对 CONTAINS 子句的基本支持。

    ```
    CONTAINS (   
         {   
            column_name
         }   
         , '<contains_search_condition>'
    )
    ```
**注意**  
目前，仅支持英语。
  + 全面处理和翻译 `simple_term` 搜索字符串。
+ `FULLTEXT INDEX` 子句：
  + 仅支持 `CREATE FULLTEXT INDEX ON table_name(column_name [...n]) KEY INDEX index_name` 语句。
  + 支持完整 `DROP FULLTEXT INDEX` 语句。
**注意**  
为了重新对全文索引编制索引，您需要删除全文索引，并在同一列上创建一个新的全文索引。
+ 搜索条件中的特殊字符：
  + Babelfish 可确保有效处理搜索字符串中出现的各个特殊字符。
**注意**  
虽然 Babelfish 现在可以识别搜索字符串中的特殊字符，但必须认识到，与使用 T-SQL 获得的结果相比，使用 Babelfish 获得的结果可能会有所不同。
+ 列名中的表别名：
  + 借助表别名支持，用户可以为全文搜索创建更简洁易读的 SQL 查询。

## Babelfish 全文搜索限制
<a name="babelfish-postgres-fulltextsearch-unsupport"></a>
+ 目前，Babelfish 不支持 `CONTAINS` 子句的以下选项。
  + 不支持特殊字符和英语以外的语言。您将收到有关不支持的字符和语言的通用错误消息

    ```
    Full-text search conditions with special characters or languages other than English are not currently supported in Babelfish
    ```
  + 多列，比如 `column_list`
  + PROPERTY 属性
  + `prefix_term`、`generation_term`、`generic_proximity_term`、`custom_proximity_term` 和 `weighted_term`
  + 不支持布尔运算符，如果使用该运算符，将收到以下错误消息：

    ```
    boolean operators not supported
    ```
  + 不支持带点的标识符名称。
+ 目前，Babelfish 不支持 `CREATE FULLTEXT INDEX` 子句的以下选项。
  + [ TYPE COLUMN type\$1column\$1name ]
  + [ LANGUAGE language\$1term ]
  + [ STATISTICAL\$1SEMANTICS ]
  + 目录文件组选项
  + with 选项
+ 不支持创建全文目录。创建全文索引不需要全文目录。
+ `CREATE FULLTEXT INDEX` 不支持带点的标识符名称。
+ Babelfish 目前不支持在搜索字符串中使用连续的特殊字符。否则，您将收到以下错误消息：

  ```
  Consecutive special characters in the full-text search condition are not currently supported in Babelfish
  ```