sql server 全文检索,功能介绍,应用特点总结。

在一个数据表里,有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

 

 

 

 

你可能感兴趣的:(Sql,server)