使用FREETEXT搜索
FREETEXT搜索方式与CONTAINS搜索方式相比,其搜索结果表现都十分不精确,因为FREETEXT的搜索方式是将一个句子中的每个单字拆分开进行搜索的。例如:如果使用CONTAINS搜索方式搜索条件为“教育部”的记录,那么搜索出来的将是记录里包含“教育部”三个字符串的记录。如果使用FREETEXT搜索方式搜索条件为“教育部”的记录,那么搜索出来的将是记录里包含“教”或“育”或“部”的记录。如果搜索的是英文字符串“SQL Server 2005” ,则拆分为“SQL”、“Server”和“ 2005” 来进行搜索,只要满足其中一个条件都算搜索成功。FREETEXT的语法代码为:
FREETEXT ( { column_name | (column_list) | * }
, 'freetext_string' [ , LANGUAGE language_term ] )
其中:
l column_name:为字段名。
l column_list:为字段列表。
l *:代码所有字段。
l 'freetext_string':搜索的字符串。
l LANGUAGE language_term:用于单词断字、词干分析、同义词库查询以及干扰词删除的特定的语言。
FREETEXT的搜索方式没有CONTAINS复杂,下面举例说明:
例七、用CONTAINS和FREETEXT两种方式来搜索“教育部”字符串,其代码如下:
SELECT * FROM 文章
WHERE FREETEXT(内容,'教育部')
SELECT * FROM 文章
WHERE CONTAINS (内容,'教育部')
其运行结果如图22所示,使用CONTAINS查询结果要比使用FREETEXT的查询结果记录数要多得多。
图22 CONTAINS和FREETEXT的查询结果