全文搜索 (SQL Server)

SQL Server 2008 为应用程序和用户提供了对 SQL Server 表中基于字符的数据发出全文查询的功能。在可以对给定表运行全文查询之前,数据库管理员必须对表创建全文索引。全文索引包括表中一个或多个基于字符的列。这些列可以具有下列任何一种数据类型:char、varchar、nchar、nvarchar、text、ntext、image、xml、varbinary 或 varbinary(max)。每个全文索引都对基表中的一个或多个列创建索引,并且每个列都可以具有一种特定语言。从 SQL Server 2008 开始,全文搜索支持 50 多种不同语言,比如英语、西班牙语、中文、日语、阿拉伯语、孟加拉语和印地语。有关支持的全文语言的完整列表,请参阅 sys.fulltext_languages (Transact-SQL)

对于每种支持的语言,SQL Server 都提供了特定于语言的语言组件,包括断字符和词干分析器以及一个空同义词库文件。对于每种全文语言,SQL Server 也提供了一个文件(“同义词库文件”),您可以在该文件中有选择地定义特定于语言的同义词以扩展搜索查询的范围。另外,从 SQL Server 2008 开始提供系统非索引字表。若要支持特定语言或商业应用场景,您可以通过添加和删除非索引字(也称为干扰词)更改系统非索引字表,并且您可以根据需要创建附加的非索引字表。

SQL Server 为编写全文查询提供了一组全文谓词(CONTAINS 和 FREETEXT)和行集值函数(CONTAINSTABLE 和 FREETEXTTABLE)。使用这些全文谓词和行集值函数,应用程序和用户可以执行各种类型的全文搜索,例如搜索单个单词或短语(并可以选择对结果集排名),搜索与其他单词或短语接近的单词或短语,或者搜索特定单词的同义词形式。

注意注意

全文搜索是 SQL Server 数据库引擎的一个可选组件。有关详细信息,请参阅安装 SQL Server 2008

本节内容