最近处理一个服务器优化的问题,发现服务器查询上太占时间了,所以尝试用全文索引解决该问题。成功搞定。把一些资料总结整理到下面以备日后查询。

CONTAINS:
CONTAINS语句的功能是在表的所有列或指定列中搜索:一个字或短语;一个字或短语的前缀;与一个字相近的另一个字;一个字的派生字;一个重复出现的字。

CONTAINS语句的语法格式为:

CONTAINS({column | *}), <contains_search_condition>)

其中,column是搜索列,使用“*”时说明对表中所有全文索引列进行搜索。
Contains_search_condition 说明CONTAINS语句的搜索内容,其语法格式为:

{<simple_term>|<prefix_term>|<proximity_term>|<generation_term>|<weighted_term>}[{{AND|AND NOT|OR}<contains_search_condition>}] […n]

下面就simple_term和prefix_term参数做简要说明:

simple_term是CONTAINS语句所搜索的单字或短语,当搜索的是一个短语时,必须使用双引号作为定界符。其格式为:

{‘word’|” phrase”}

prefix_term说明CONTAINS语句所搜索的字或短语前缀,其格式为:

{“word*” | “phrase*”}

例如,下面语句检索Book表的Title列和Notes列中包含“database”或“computer”字符串的图书名称及其注释信息:

select title, notes
from book
where contains(tilte, 'database') or contains(notes,'database')
or contains(title,'computer') or contains(notes,'computer')

FREETEXT

FREETEXT语句的功能是在一个表的所有列或指定列中搜索一个自由文本格式的字符串,并返回与该字符串匹配的数据行。所以,FREETEXT语句所执行的功能又称做自由式全文查询。

FREETEXT语句的语法格式为:FREETEXT({column | * },’freetext_string’)

其中,column是被搜索列,使用“*”时说明对表中的所有全文索引列进行搜索。Freetext_string参数指出所搜索的自由文本格式字符串。

例如,下面语句使用FREETEXT语句搜索Book表中包含“工艺”和“机械”字符串的数据行,注意,SQL语名把字符串分成两个词搜索了:

select * 
from trade 
where freetext(*,'工艺 机械') 

以上内容转自:http://www.cnblogs.com/baoposhou/archive/2006/12/21/599363.html

Related Posts: SQL Server 全文检索语句与示例 :