-- 验证全文检索服务是否安装
-- 通过储存过程 FULLTEXTSERVICEPROPERTY (返回有关全文服务级别属性的信息)来验证搜索服务(全文组件)是否安装。
-- 如 Select fulltextserviceproperty ('IsFullTextInstalled')
-- 返回 1 表示已安装全文组件;
-- 返回 0 表示未安装全文组件;
-- 返回 Null 表示输入无效或发生错误。
Select fulltextserviceproperty ('IsFullTextInstalled')
-- 选一个数据库
use fulltexttest
go
-- 从数据库中删除所有目录:
Exec sp_fulltext_database 'disable'
-- 打开数据库全文索引的支持
execute sp_fulltext_database 'enable'
go
-- 建立全文目录 ft_news ,新闻库
-- 使用不同参数进行全文目录的创建、重建、填充、删除
--create 创建
--rebuild 填充
--start_full 启动填充
--stop 删除
-- 以下执行新闻目录的创建
execute sp_fulltext_catalog 'ft_news', 'create'
go
-- 为 titles 表建立全文索引数据元, PK_dtlmb,PK_dtxxb 是主键所建立的唯一索引,可由 sp_help titles 得知
--sp_fulltext_table [ @tabname = ] 'qualified_table_name'
-- , [ @action = ] 'action'
-- [ , [ @ftcat = ] 'fulltext_catalog_name'
-- , [ @keyname = ] 'unique_index_name' ]
-- 为以下数据表分别创建主键
--alter table dtlmb add CONSTRAINT PK_dtlmb PRIMARY KEY CLUSTERED (t_dtlmb_ID)
--alter table dtxxb add CONSTRAINT PK_dtxxb PRIMARY KEY CLUSTERED (GUID)
-- 为全文索引对表进行标记
execute sp_fulltext_table 'dtlmb','create', 'ft_news', 'PK_dtlmb'
go
execute sp_fulltext_table 'dtxxb','create', 'ft_news', 'PK_dtxxb'
go
-- 设置全文索引列名
exec sp_fulltext_column 'dtlmb', 'dtlmlx', 'add'
go
exec sp_fulltext_column 'dtlmb', 'zt', 'add'
go
exec sp_fulltext_column 'dtlmb', 'cc', 'add'
go
exec sp_fulltext_column 'dtxxb', 'dtxxlmlx', 'add'
go
exec sp_fulltext_column 'dtxxb', 'zt', 'add'
go
exec sp_fulltext_column 'dtxxb', 'cc', 'add'
go
-- 激活全文索引
exec sp_fulltext_table 'dtlmb', 'activate'
go
exec sp_fulltext_table 'dtxxb', 'activate'
go
-- 填充全文索引目录
exec sp_fulltext_catalog 'ft_news', 'start_full'
GO
--检查全文目录填充情况,一共两张表 36条记录花了 33分钟
WHILE FulltextCatalogProperty('ft_news','PopulateStatus')<>0
BEGIN
-- 如果全文目录正处于填充状态,则等待 30 秒后再检测一次
WAITFOR DELAY '0:0:30'
END
-- 全文目录填充完成后,使用全文目录检索
-- 使用 contains 和 freetext
select zt,cc from dtlmb
where contains(zt, 'xxx')
go
select zt,cc from dtlmb
where contains(*, '"xxx"')
go
select dtxxlmlx,zt,cc from dtxxb
where freetext(zt, 'xxx')
go
select dtxxlmlx,zt,cc from dtxxb
where freetext (*, '"xxx"')
go
Select * from dtxxb where zt like ‘%xxx%’
--与全文检索相比,从网络统计信息 ->所接收的字节数 /时间统计信息 ->服务器应答累计等待时间 ,时间相差一个数据量级
-- 增量填充,即激活并传播跟踪更改
-- 当更改发生时,下面的示例激活并启动将所跟踪的更改传播到全文索引。
--如果表不包含 timestamp列,则只能执行完全填充或更改跟踪填充
EXEC sp_fulltext_table dtlmb, 'Start_change_tracking' -- 启动全文索引的增量填充
EXEC sp_fulltext_table dtlmb, 'Start_background_updateindex' -- 在变化发生时,开始将跟踪的变化传播到全文索引。
-- 更改一条记录,大约过一分钟之后,便可通过全文检索查询到