在一个数据表里,有3个字段,如下:
ID 自动增加,已建索引
TITLE nvarchar(255)
CONTENT ntext(16)
对title字段进行“like”查询,速度还行。但是要对content字段,进行“like”查询,速度很慢,不可行,想到了使用全文检索。
建立全文检索,有2种方法。
1.使用sql server 2000视图菜单,一步一步来
2.使用T-sql语句
先来说视图菜单,如何建立全文检索。
1.启用全文检索,如下图,选中,右键“启用”
2. 建立全文目录。
选中第一个“新建全文目录”,出现“新全文目录属性”对话框。
对于“新建全文目录”,输入名称即可,例如:ft_total。
对于“调度”,这个是用来制定全文检索任务执行的时间的,你可以根据需要进行设置。
3.对数据表,建立全文检索,如下图。根据向导,选择需要做检索的列,即可完成。在这个过程中,你也可以建立“调度”。
4. 对全文目录“ft_total”,进行“启动完全填充”。
根据以上步骤,就建好了索引,下面来测试下。
sql 查询器中,输入sql语句:
select * from baidu2 where contains(content,'品牌')
即可查询,正文里含有“品牌”的数据行。
下面是使用T-sql语句,建立全文检索。
首先,介绍利用系统存储过程创建全文索引的具体步骤:
1) 启动数据库的全文处理功能 (sp_fulltext_database)
2) 建立全文目录 (sp_fulltext_catalog)
3) 在全文目录中注册需要全文索引的表 (sp_fulltext_table)
4) 指出表中需要全文索引的列名 (sp_fulltext_column)
5) 为表创建全文索引 (sp_fulltext_table)
6) 填充全文目录 (sp_fulltext_catalog)
user test --打开数据库
go
--检查数据库test是否支持全文索引,如果不支持
--则使用sp_fulltext_database 打开该功能
if(select databaseproperty('test','isfulltextenabled'))=0
execute sp_fulltext_database 'enable'
--建立全文目录ft_total
execute sp_fulltext_catalog 'ft_total','create'
--为baidu2表建立全文索引数据元
execute sp_fulltext_table baidu2,'create','ft_total',id'
--设置全文索引列名
execute sp_fulltext_column 'baidu2','title','add'
execute sp_fulltext_column 'baidu2',content,'add'
--建立全文索引
--activate,是激活表的全文检索能力,也就是在全文目录中注册该表
execute sp_fulltext_table 'baidu2','activate'
--填充全文索引目录
execute sp_fulltext_catalog 'ft_total','start_full'
go
--检查全文目录填充情况
While fulltextcatalogproperty('ft_total','populateStatus')<>0
begin
--至此,全文目录填充完成.
使用上面方法,建立全文检索时,可能会出现以下问题。
1. 执行“execute sp_fulltext_database 'enable'”时,有可能提示“sp_fulltext_database”存储过程不存在。
你需要添加上这个存储过程。sql语句为:exec sp_addextendedproc xp_getfiledetails,'xpstar.dll' (?????有待验证)
2. 执行“execute sp_fulltext_table baidu2,'create','ft_total',id' ”,可能提示“'id' 不是可用于强制全文搜索键的有效索引。必须指定唯一的、不可为空的、单列的索引。”
你需要定义唯一的索引。sql语句:create unique index id on baidu2(id)
相关问题:http://topic.csdn.net/u/20100103/22/55b6e4fb-3159-428d-a687-0c10186f5715.html