Transact-SQL 参考

FREETEXT

是个谓词,用于搜索含有基于字符的数据类型的列,其中的值符合在搜索条件中所指定文本的含义,但不符合表达方式。使用 FREETEXT 时,全文查询引擎内部将 freetext_string 拆分为若干个搜索词,并赋予每个词以不同的加权,然后查找匹配。

语法

FREETEXT ( { column | * } , 'freetext_string' )

参数

column

已经注册全文检索的特定列的名称。具有字符串数据类型的列是可进行全文检索的有效的列。

*

指定所有已注册用于全文检索的列均用于搜索给定的 freetext_string

freetext_string

要在指定的 column 中进行搜索的文本。可以输入任何文本,包括单词、短语或句子。所输入的文本与语法无关。

注释

使用 FREETEXT 的全文查询没有使用 CONTAINS 的全文查询精度高。Microsoft® SQL Server™ 全文检索引擎识别重要的字词和短语。保留关键字或通配符字符都不具有特殊含义,而它们指定在 CONTAINS 谓词的 <contains_search_condition> 参数中时则通常具有含义。

当兼容性级别小于 70 时,FREETEXT 不被识别为关键字。有关更多信息,请参见 sp_dbcmptlevel

示例
A. 使用 FREETEXT 搜索包含指定字符值的单词

下例搜索产品描述中含有与 bread、candy、dry 和 meat 相关的词语的所有产品类别,如 breads、candies、dried 和 meats 等。

USE Northwind
GO
SELECT CategoryName
FROM Categories
WHERE FREETEXT (Description, 'sweetest candy bread and dry meat' )
GO
B. 在全文检索中使用变量

下例使用变量而不是特定的搜索术语。

USE pubs
GO
DECLARE @SearchWord varchar(30)
SET @SearchWord ='Moon'
SELECT pr_info FROM pub_info WHERE FREETEXT(pr_info, @SearchWord)

请参见

CONTAINS

CONTAINSTABLE

数据类型

FREETEXTTABLE

WHERE