适用场景
文档管理系统:在存储大量文档的系统中,用户可能需要根据文档中的关键词来搜索相关文档,全文索引能快速定位包含这些关键词的文档。
新闻网站:对于新闻文章数据库,用户可能会通过输入关键词来搜索包含特定主题的新闻报道,使用全文索引可以提高搜索速度。
基本概念
全文目录:是一个逻辑结构,用于组织和管理全文索引。它不是物理文件,而是包含了指向全文索引数据的引用。
全文索引:存储了表中指定列的文本数据的分词信息和对应的行标识符,通过这些信息可以快速定位包含特定关键词的行。
断字符和词干提取器:断字符用于将文本拆分成单个的词或标记,词干提取器则用于将单词还原为其词干形式,以便在搜索时能够匹配不同形式的同一单词。
使用步骤
启用全文搜索功能
在使用全文索引之前,需要确保 SQL Server 实例已经启用了全文搜索功能。可以通过 SQL Server 安装向导或者使用以下命令来启用:
EXEC sp_fulltext_database 'enable';
创建全文目录
CREATE FULLTEXT CATALOG MyFullTextCatalog
WITH ACCENT_SENSITIVITY = OFF;
上述代码创建了一个名为 MyFullTextCatalog 的全文目录,ACCENT_SENSITIVITY = OFF 表示不区分重音。
创建全文索引
假设我们有一个 Products 表,其中包含 ProductName 和 Description 列,我们可以为这两列创建全文索引:
CREATE FULLTEXT INDEX ON Products(ProductName, Description)
KEY INDEX PK_Products -- 指定唯一索引作为行定位器
ON MyFullTextCatalog;
这里 PK_Products 是 Products 表的主键索引,用于唯一标识每一行。
执行全文搜索
使用 CONTAINS 或 FREETEXT 函数进行全文搜索:
CONTAINS 函数:用于执行精确匹配搜索,可以搜索特定的单词、短语或包含特定逻辑关系的关键词。
SELECT *
FROM Products
WHERE CONTAINS((ProductName, Description), 'keyword');




