use [user1] –打开数据库
go
–检查user1是否支持全文索引,如果不支持全文索引,则使用sp_fulltext_datebase打开该功能
if (select databaseproperty (‘user1’,’IsFulltextEnables’))=0
execute sp_fulltext_database ‘enable’
–建立全文目录FullText_user1
execute sp_fulltext_catalog ‘FullText_user1’,’create’
–为dyn_mail_content表建立全文索引数据元
execute sp_fulltext_table ‘dyn_mail_content’,’create’,’FullText_user1’,’PK_dyn_mail_content’
–设置全文索引列名
execute sp_fulltext_column ‘dyn_mail_content’,’content’,’add’
–激活全文索引
execute sp_fulltext_table ‘FullText_user1’,’activate’
–填充全文索引目录
execute sp_fulltext_catalog ‘FullText_user1’,’start_full’
GO
–检查全文目录填充情况
WHILE FulltextCatalogProperty(‘FullText_user1’,’PopulateStatus’)<>0
BEGIN
–如果全文目录正处于填充状态,则等待30秒后再检测一次
WAITFOR DELAY ‘0:0:30’
END
–全文目录填充完成后,使用全文目录检索
–查询title列或notes列中包含有database或computer字符串的图书名称
这里可以选择断字符语言
SELECT count(*) FROM dyn_mail_content where freetext(content,’able’)
SELECT count(*) FROM dyn_mail_content where contains(content,’able’)
SELECT count(*) FROM dyn_mail_content where contains(content,’able’ or ‘your’)
查询多个词中间用or隔开
使用contains时,输出的结果比freetext精确,可以理解为前者是精确搜索,freetext是左匹配搜索。freetext在使用时服务器会对关键词进行加工,然后对输出结果进行加工,所以占用的服务器系统资源比contains大。
在CONTAINS(‘这是一个测试条件’,’%条%’) 看来,它是没有结果的。它是怎样处理的呢? 就是说在”这是一个测试条件’”这个句子中,没有”条”这个词(注:而不是这个字),如果CONTAINS(‘这是一个测试条件’,’%条件%’)就有了结果。
而Like呢,Like ‘%条%’ 和 Like ‘%条件%’ 都是有结果的。所以通常Like查询出来的结果要比 CONTAINS要多,但可用在不同的匹配要求。