SQL Server:全文检索中的数据填充问题

ContractedBlock.gif ExpandedBlockStart.gif 代码
-- 创建测试的数据库
CREATE   DATABASE  db
GO

USE  db

-- 创建测试的表
CREATE   TABLE  tb(id  int   IDENTITY ,col  ntext , CONSTRAINT  PK_tb  PRIMARY   KEY (id))
INSERT  tb  SELECT  N ' 若无其事咬牙切齿 '
UNION   ALL   SELECT  N ' 车水马龙abcd因小而失大 '
GO

-- 初始化全文索引
EXEC  sp_fulltext_database  ' enable '
GO

-- 创建一个名为 test 的全文目录
EXEC  sp_fulltext_catalog  ' test ' ' create '  
GO

-- 创建并填充全文索引
EXEC  sp_fulltext_table  ' tb ' , ' create ' , ' test ' , ' PK_tb '
EXEC  sp_fulltext_column  ' tb ' , ' col ' , ' add ' , 0x0804
EXEC  sp_fulltext_table  ' tb ' , ' start_change_tracking '
EXEC  sp_fulltext_table  ' tb ' , ' Start_background_updateindex '
GO

-- 立即检索数据,会发现检索不到数据
SELECT   *   FROM  tb  WHERE   CONTAINS (col,N ' "abcd" ' )
WAITFOR  DELAY  ' 00:00:01 '
-- 延时后可以检索到数据
SELECT   *   FROM  tb  WHERE   CONTAINS (col,N ' "abcd" ' )

-- 插入一条新数据
INSERT  tb  SELECT  N ' 若abcd无其事咬牙切齿 '
-- 立即,检索不到新加入的数据
SELECT   *   FROM  tb  WHERE   CONTAINS (col,N ' "abcd" ' )
WAITFOR  DELAY  ' 00:00:15 '
-- 延时后可以检索到数据
SELECT   *   FROM  tb  WHERE   CONTAINS (col,N ' "abcd" ' )
GO

-- 删除测试
USE  master
DROP   DATABASE  db

 

你可能感兴趣的:(SQL Server:全文检索中的数据填充问题)