日期:2014-05-18  浏览次数:20396 次

[原创]SQL SERVER 2005/2008 全文索引介绍 (一)
PS:最近在论坛上接连碰到有关SQL全文索引的提问,感觉有点代表性,特此准备写个系列文章,将我对SQL全文索引的理解与大家分享一下,欢迎各位批评指正。

在正式介绍SQL全文索引相关概念,先请各位跟着如下步骤实战一下:
SQL code

--新建一个测试数据库,并指定排序规则为Chinese_PRC_CI_AS
CREATE DATABASE TESTFT COLLATE Chinese_PRC_CI_AS    
GO
USE TESTFT
GO
--新建全文目录TestCL,并将其置为默认
CREATE FULLTEXT CATALOG TestCL AS DEFAULT    
GO

--新建测试表
CREATE TABLE TB        
(
    ID INT IDENTITY,
    Title VARCHAR(100),
    Body VARCHAR(1000),
    CONSTRAINT PK_TB PRIMARY KEY CLUSTERED (ID)
)
GO

--在TB表的title和body列上创建全文索引
CREATE FULLTEXT INDEX ON TB (Title,Body) KEY INDEX PK_TB
GO

--插入两行演示数据
INSERT TB(Title,Body) VALUES('艺术家评选','苍井空和小泽玛利亚是深受人民群众喜爱的著名艺术家')
INSERT TB(Title,Body) VALUES('给苍老师的一封信','宁夏固原有一位网友给敬爱的苍老师写了一封信')
GO



OK,到目前为止,准备工作基本完成,下面开始查询
SQL code

--例1:
SELECT * FROM TB WHERE CONTAINS(*,'小')
/*
ID          Title                          Body
----------- ------------------------------ ------------------------------------------------------
(0 行受影响)
*/
SELECT * FROM TB WHERE CONTAINS(*,'小泽')
/*
ID          Title                          Body
----------- ------------------------------ ------------------------------------------------------
1           艺术家评选                     苍井空和小泽玛利亚是深受人民群众喜爱的著名艺术家

(1 行受影响)
*/

--例2:
SELECT * FROM TB WHERE CONTAINS(*,'苍')
/*
ID          Title                          Body
----------- ------------------------------ ------------------------------------------------------
1           艺术家评选                     苍井空和小泽玛利亚是深受人民群众喜爱的著名艺术家
(1 行受影响)
*/
SELECT * FROM TB WHERE CONTAINS(*,'苍老师')
/*
ID          Title                          Body
----------- ------------------------------ ------------------------------------------------------
2           给苍老师的一封信               宁夏固原有一位网友给敬爱的苍老师写了一封信
(1 行受影响)
*/


看着上面的查询结果,是不是很奇怪,这和我们的预期完全不一样嘛,怎么会这样呢?

《SQL SERVER 2005/2008 全文索引介绍 (一)》全文完,敬请期待《SQL SERVER 2005/2008 全文索引介绍 (二)》,呵呵!

------解决方案--------------------
广告位出租
------解决方案--------------------
皇族都已经双钻了?牛啊
------解决方案--------------------
我这也贴个 2000与2005的全文索引吧,共同探讨
------解决方案--------------------
全文索引对中文的支持累人
------解决方案--------------------
学习 ..盖章
------解决方案--------------------
学习,来过~~~~~~~~
------解决方案--------------------
4fv
------解决方案--------------------
很好啊
------解决方案--------------------
学习了
------解决方案--------------------
实在是高
------解决方案--------------------
期待解释
------解决方案--------------------
非常感谢
------解决方案--------------------
高人们 能解决 中英文混排 分词 的问题 才行啊


------解决方案--------------------
楼主好像是要说明光有“小”是不行的
------解决方案--------------------
一直在用SQL Server Personal版本,不支持全文搜索,不过仍学一下,
------解决方案--------------------