SQLSERVER全文索引

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要多,但可用在不同的匹配要求。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值