创建全文索引----SQLserver

  1、启动 Microsoft Search 服务
  开始菜单-->SQL程序组-->服务管理器-->下拉筐-->Microsoft Search 服务-->启动它。
  2、 ..\Microsoft SQL Server\MSSQL\FTDATA\SQLServer\Config\目录里建一个非空noise.chs文件
  非空noise.chs文件,也有人说是空的noise.chs文件,但我每次都往里写几个没用的字母。
  3、建立环境
  打开查询分析器-->执行下列脚本:

--检查数据库pubs是否支持全文索引,如果不支持
--则使用sp_fulltext_database 打开该功能
if(select databaseproperty('DeviceInfoPortal','isfulltextenabled'))=0
execute sp_fulltext_database 'enable'

--建立全文目录FT_PUBS
execute sp_fulltext_catalog 'FT_DeviceInfoPortal','create'

--创建唯一索引
create unique clustered index Idx_files_id on dbo.files(fileid)

--为title表建立全文索引数据元
execute sp_fulltext_table 'files','create','FT_DeviceInfoPortal','Idx_files_id'

--设置全文索引列名
--execute sp_fulltext_column 'files','content','add'
execute sp_fulltext_column @tabname = 'files',@colname = 'content',@action = 'add',@type_colname = 'type';

--execute sp_fulltext_column 'files','content','drop'

--建立全文索引
--activate,是激活表的全文检索能力,也就是在全文目录中注册该表
execute sp_fulltext_table 'files','activate'

--填充全文索引目录
execute sp_fulltext_catalog 'FT_DeviceInfoPortal','start_full'
go

--在您可以使用操作系统筛选器、断字符和词干分析器之前,您必须将它们加载到服务器实例中
execute sp_fulltext_service @action='load_os_resources', @value=1;

--检查全文目录填充情况
While fulltextcatalogproperty('FT_DeviceInfoPortal','populateStatus')<>0
begin

--如果全文目录正处于填充状态,则等待30秒后再检测一次
waitfor delay '0:0:30'
end 
--全文目录填充完成后,即可使用全文目录检索

select *
from files
where CONTAINS(*,'运行记录')
or CONTAINS(*,'Understanding')
or CONTAINS(*,'全文搜索')

or CONTAINS(*,'出厂日期')

  结果如下:

  全文索引中的几个问题:
  1. 搜索时出现错误:
  服务器: 消息 7619,级别 16,状态 1,行 2
  查询子句只包含被忽略的词
  这种情况修改 \Mssql\Ftdata\Sqlserver\Config 下对应语言的干扰词列表文件

  2. 修改了干扰词文件,查询中文时仍然出现上述问题

  a. 首先检查你的SQL有没有安装最新的补丁,检查的方法是在查询分析器中运行:

  select @@version
  如果出来的版本号是8.00.760以下,则表明你未安装sp3的补丁,要装上。
  注意下载后,执行的时候是解压,要在解压后的目录中执行setup.bat才是真正的安装。

  b. 配置全文索引时,单词断字符选择"中文(中国)"
  c. Noise.chs文件中至少有一个单词,例如:?

  d. 如果在全文检索时,你能正常修改干扰词文件,说明你的全文检索没有使用上这个文件。

  如果你配置的全文检索应该要用到这个文件,那就在

  “企业管理器--展开你的数据库--右键全文目录--重建全部全文目录”

  3. 表中的数据改变后,检索不到。
  方法1. 右键你的表--全文索引表--启用增量填充
  方法2. 右键你的表--全文索引表--更改跟踪,这样以后的修改会自动填充(有一定延迟)

  4. SQL Server 2000以上才支持对image列的全文检索。

posted on 2018-02-03 11:15  刘艺LiuYi  阅读(336)  评论(0编辑  收藏  举报

导航