SQL2005全文索引(7)

2019-01-19 16:02

邻近词的搜索方式可以搜索记录中位置相近的两个字符,例如要搜索文章标题为“教育部拟取消教师资格终身制实行定期认证”的文章,完整的标题名记不清楚了,只记得“教育部”和“资格”,则可以以邻近词的搜索方式进行查询

例六、搜索文章内容中与教育部表示相关的记录,其代码如下:

SELECT * FROM 文章 WHERE CONTAINS(内容, \教育部\NEAR \表示\

(7.2)使用FREETEXT搜索

FREETEXT搜索方式与CONTAINS搜索方式相比,其搜索结果表现都十分不精确,因为FREETEXT的搜索方式是将一个句子中的每个单字拆分开进行搜索的。例如:如果使用CONTAINS搜索方式搜索条件为“教育部”的记录,那么搜索出来的将是记录里包含“教育部”三个字符串的记录。如果使用FREETEXT搜索方式搜索条件为“教育部”的记录,那么搜索出来的将是记录里包含“教”或“育”或“部”的记录。如果搜索的是英文字符串“SQL Server 2005”,则拆分为“SQL”、“Server”和“2005”来进行搜索,只要满足其中一个条件都算搜索成功。FREETEXT的语法代码參考聯機幫助用CONTAINS和FREETEXT两种方式来搜索“教育部”字符串,其代码如下:

SELECT * FROM 文章 WHERE FREETEXT(内容,教育部)

SELECT * FROM 文章 WHERE CONTAINS (内容,教育部)

其运行结果如图7.4所示,使用CONTAINS查询结果要比使用FREETEXT的查询结果记录数要少得多。

7.4CONTAINS和 FREE

TEXT的查询结果

(7.3)使用CONTAINSTABLE搜索

CONTAINSTABLE函数与CONTAINS谓词类似,其可以返回符合条件的多条记录,但是返回的记录是作为数据表出现在SELECT语句的FROM子句中。这个数据表里只包含两个字段:一个字段名为“KEY”,该字段显示的是全文索引的唯一索引键的内容,也就是图14.6所示界面中所创建的索引列;另一个字段名为“RANK”,该字段是排名值字段,其排名值是由系统依查询符合的程度自动生成的。CONTAINSTABLE的语法代码參考聯機幫助

CONTAINSTABLE与CONTAINS的搜索条件一样分为五类,其形式也几乎一样,只是增加了table和top_n_by_rank两个参数:

table:全文索引所在的数据表名。

top_n_by_rank:返回的记录数,相当于SELECT语句中的top n。

下面举几个例子说明CONTAINSTABLE与CONTAINS在用法上不同的地方。

查看文章表中内容含有“教育部”的记录的编号,其代码如下:

SELECT * FROM CONTAINSTABLE(文章,内容,教育部) as table1

在本例中可以看到,CONTAINSTABLE返回的结果是作为数据表的形式出现在FROM子句中。其运行结果如图7.5所示,查询的结果也就是CONTAINSTABLE返回的数据表的结果,只有两个字段。

7.5CONTAINSTABLE返回的结果

查看文章表中内容含有“教育部”和“表示”的前十条记录,并按查询符合程度排序,其代码如下:

SELECT * FROM 文章 JOIN CONTAINSTABLE(文章,内容, \教育部\NEAR \表示\,10) as table

ON 文章.编号= table1.[KEY] ORDER BY table1.RANK DESC

其运行结果如图7.6所示,在本例中,将CONTAINSTABLE函数返回的数据表与文章表JOIN起来进行联合查询,就好像一个真实的数据表一样。由于KEY是关键字,所以在本例当中用方括号将KEY括起来。

7.6例九的运行结果

例十、搜索文章表中内容中含有“download”、“上海”、“山西”的记录,并为不同的条件加上加权值,然后按权值排序。其代码如下:SELECT * FROM 文章 JOIN CONTAI

NSTABLE(文章,内容,ISABOUT (\weight(0.9),\上海\weight(0.6),\山西\weight(0.1))) AS TABLE1 ON 文章.编号 = TABLE1.[KEY] ORDER BY TABLE1.RANK DESC 其运行结果如图7.7所示,RANK字段是依符合程度生成的数据再加上权值后的结果

7.7例十的运行结果

(7.4)使用FREETEXTTABLE搜索

与CONTAINSTABLE一样,FREETEXTTABLE函数也是返回拥有KEY和RANK两个字段的表,该表可以和数据库中的数据表一样使用。FREETEXTTABLE的语法与FREETEXT谓词的语法代码相似,只是多了table和top_n_by_rank两个参数。

例十一、查看文章表中“内容”字段含有“教育部”的前十条记录,其代码如下:

SELECT 文章.内容,TABLE1.* FROM 文章 JOIN FREETEXTTABLE(文章,内容,教育部,8) AS TABLE1

ON 文章.编号= TABLE1.[KEY]

(7.5)搜索image字段

在SQL Server 2005的image类型的字段里,不仅仅是可以存储图形文件,还可以存储如可执行文件、音乐文件、文本文件等众多文件类型。SQL Server 2005支持对存储在image类型的字段里的一些文件的内容进行全文搜索,但在创建全文索引时必须指明存储在image字段里的文件的类型。如图5.3所示

SQL Server 2005支持对存储在image中的纯文本文件、网页文件、Word文件、Excel文件和PowerPoint文件的内容进行查询,其扩展名字段必须分别为txt、htm、doc、xls和ppt。全文索引创建完毕后,对image字段里的文件内容进行查询的方法与其他字段的查询方法是一样的:

例十二、查询存储在文章表的文件字段里的内容包含“数据库”的文件,其代码如下

SELECT 编号,标题,文件,扩展名 FROM 文章 WHERE CONTAINS(文件,数据库)

(8)2005新增:与全文索引相关的T-SQL语句

在SQL Server 2005以前的版本中,创建与管理全文目录、全文索引主要是使用存储过程来完成。从SQL Server 2005开始新增加了一些与全文索引相关的T-SQL语句,可以用来创建与管理全文目录和全文索引。

(8.1)创建全文目录

创建全文目录的T-SQL语句为

例十三、在Northwind数据库中创建一个名为“TSQL全文目录”全文目录,其代码如下:

CREATE FULLTEXT CATALOG TSQL全文目录

ON FILEGROUP [PRIMARY]

IN PATH E:\Server 2005大全\数据库\第十四章\运行后数据库

AS DEFAULT


SQL2005全文索引(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:十七大知识竞赛成稿

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: