SQL Server 全文检索技术

SQL Server全文检索的实现 综上所述,我们可以通过配置全文检索、创建全文索引以及执行全文搜索操作,实现SQL Server中的全文检索功能。在上述代码中,将"TableName"替换为要创建全文索引的表名,"ColumnName"替换为要创建索引的列名,"PK_TableName"替换为表的主键索引。在上述代码中,将"TableName"替换为要搜索的表名,"ColumnName"替换为要搜索的列名,"SearchKeyword"替换为要搜索的关键字。在配置完全文检索之后,我们需要创建全文索引,以便对相应的表进行全文搜索。 阅读详情
 
ASP(Active Server Pages)是微软公司建立的一套服务器端脚本环境。设计人员可以结合HTML、ASP指令和ActiveX控件建立动态、交互且高效的Web服务器应用程序。由于所有的程序都嵌入HTML中且在服务器端执行,因此不必担心客户端的浏览器能否运行程序。同时,它还具有简单、易开发、兼容性好等优点。ADO(ActiveX Data Object,ActiveX数据对象)是一个ASP内置的ActiveX服务器组件(ActiveX Server Component),用于数据库访问,可把它与ASP结合起来,建立提供数据库信息的网页内容,对数据库进行查询、插入、更新、删除等操作。ADO对象可以操作所有ODBC驱动程序存取的数据源格式。同时,ADO还具有简单易用、速度快等优点。
SQL Server 2000的全文检索服务可以支持布尔检索和加权检索等高级检索。用ASP可以实现这些检索功能。
3 全文检索语句CONTAINS和FREETEXT的使用
全文检索使用户可以高效检索存储在数据库的char、varchar、text、ntext、nchar、nvarchar等数据类型列中的文本数据。在进行全文检索之前,应建立和填充数据库全文索引。
3.1 全文索引
为了支持全文索引操作,SQL Server 7.0新增了一些新的存储过程和Transact-SQL语句。使用这些存储过程创建全文索引的具体步骤如下(括号内为每步所调用的存储过程名称):
(1)启动数据库的全文处理功能(sp_fulltexLdatabase);
(2)建立全文目录(sp_fulhexLcatalog);
(3)在全文目录中注册需要全文索引的表(sp_fulltext table);
(4)指出表中需要全文检索的列名(sp_full—texLeolumn);
(5)为表创建全文索引(sp_fulltexLtable);
(6)填充全文目录(sp_fulltext_catalog)。
下面举例说明:
在本例中,对test数据库book表中title列和notes列建立全文索引。
//首先先启动SQL Server的全文搜索服务。
use test //打开数据库
go
//打开全文索引支持
execute sp_fulltext_database ‘enable’
//建立全文目录ft_pubs
execute sp_fulltext_catalog ‘ft_test’,‘create’
//为titles表建立全文索引数据元,pk_title为book表中由主键所建立的唯一索引,此参数必须。
execute sp_fulltext_table ‘book’,‘create’,‘ft_test’,‘pk_title’
//设置全文索引列名
execute sp_fulltext_eolumn ‘book’,‘title’,‘ add’
execute sp_fulltext_ column ‘book’,‘notes’,‘add’
//建立全文索引
execute sp_fulltexLtable ‘book’,‘activate’
//填充全文索引目录
execute sp_fulltext_ catalog ‘ft_test’,‘start_ full’
go
至此,全文索引建立完毕。
3.2 全文检索
SQL Server 2000提供的全文检索语句主要有CONTAINS和FREETEXT。CONTAINS语句的功能是在表所有列或指定列中搜索:
●一个字或短语;
●一个字或短语的前缀;
●与一个字相近的另一个字;
●一个字的派生字;
●一个重复出现的字。
CONTAINS语句的语法格式为:
CONTAINS({column *}),‘’) 其中,column说明被搜索列,使用时说明对表中所有全文索引列莲行搜索
Contains_ search_ condition说明CONTAINS语句的搜索内容,其语法格式为:
{||| |) [{|ANDIAND NOT|OR}}] [.n]
下面就simple_term和predix_term参数做一简要说明:
simple— term指出CONTAINS语句所搜索的单字或短语,当为一个短语时,必须使用双引号作为定界符。其格式为:
{word | “phrase”}
predix_term说明CONTAINS语句所搜索的字或短语前缀,其格式为:
{“word * ”| “phrase ”}
例如,下面语句检索b0ok表的title列和notes列中包含database或computer字符串的图书名称及其注释信息:
select title,notes from book
where contains(tilte,‘database’)or contains(notes,‘datable’)
or contains(title,‘computer’)or contains(notes,‘computer’)
FREETEXT语句的功能是在一个表的所有列或指定列中搜索一个自由文本格式的字符串,并返回与该字符串匹配的数据行。所以,FREETEXT语句所执行的功能又称做自由式全文查询。
FREETEXT语句的语法格式为:
FREETEXT({column * },‘freetext_string’)
其中,column说明被搜索列,使用*时说明对表中的所有全文索引列进行搜索。Freetext_string参数指出所搜索的自由文本格式字符串。
例如,下面语句使用FREETEXT语句搜索book表中包含Successful Life字符串的数据行:
select title,notes
from book
where freetext (*,‘Successful Life’)

4  结束语
通过学习和实践,我认为SQLServer2000的全文检索服务有以下优点:
第一,简单易用。由于SQLServer2000的全文检索服务已经集成到整个服务中,因此,全文检索可以使用“企业管理器”进行统一的图形界面的管理。而且,进行检索时可以使用标准的T—SQL语句,学习、使用十分方便。
第二,SQLServer2000功能强大。比如,其自身具有“噪音词”(noiseterm )过滤的机制。在“.MSSQL\TDATA\SQL Server\config”目录下,有一个“noise.dat”文件类似于停用词表,可以对一些没有检索意义的词如a、you等进行过滤而不建立索引。用户自己也可以对该词表进行增补,以过滤一些词。同时,我发现SQLServer2000的全文检索存在一些不足。如当用户对全文索引过的字段进行修改后,需要用户进行手工的“填充”,而不能机器自动完成这一步,另外该系统对计算机硬件要求较高等等。随着计算机硬件的发展以及SQL Server软件本身的不断完善,我相信这些不足是可以得到改善的。
手把手教你SQLserver2008全文检索使用方法 立即下载

相关推荐

SQLSERVER全文索引的使用

该文档详述如何创建全文索引优化模糊查询,使用全文索引的填充因子避免漏查多查

SQL Server中的全文搜索

全文索引在表中包括一个或多个基于字符的列。这些列可以具有以下任何数据类型:char、varchar、nchar、nvarchar、text、ntext、image、xml 或 varbinary(max) 和 FILESTREAM。每个全文索引为表中的一列或多列编制索引,并且每列可以使用特定的语言。全文查询通过基于特定语言(如英语或中文)的规则对单词和短语进行操作,对全文索引中的文本数据执行语言搜索。全文查询可以包括简单的字词和短语,也可以包括字词或短语的多种形式。

Lion_Long的博客 3784

SQL Server全文检索对文本内容进行检索的三个方案

SQL Server全文检索对文本内容进行检索的三个方案

sql server 全文检索 使用

目前项目中的日志查询 功能 由于长年累月的写入,目前已经达到千万级,对日志进行like 查询,速度可想而知。 此处只讨论 在数据库的优化。 当时 想到两个方案,一个是分区,一个 是全文检索。 分区的话,如果跨区,速度也会很慢,并且对区粒度的划分也得考虑,并且既然使用 like ‘%XX%’,必然不会走索引。 所以 选择 sqlserver 的full-text search 功能,该功能类...

未来战警 1万+

sqlserver怎么做全文搜索

sqlserver怎么做全文搜索

u011511086的专栏 639

SQLServer 全文检索(full-text)语法

sql server 全文检索有两种搜索方式,一种是contains,另一种是freetext。前者是包含,类似于like '%关键词%',后者则是将一段文字分词以后对每个词进行搜索。   具体语法:   contains:   SELECT 字段1,字段2   FROM 表名   WHERE contains(字段,'"词一" or "词二"')   根据查找结果的相似度排序   

hoostone的专栏 4258

SQL Server 2005全文检索技术

6. 更多的集成选择 当然,SQL Server 2005的全文检索不是微软平台上的唯一选择,其他主要的全文检索技术如下: (1)Index Server, Indexing Service for Microsoft Windows (2)Microsoft SharePoint™ Portal Server 2001(及后续版本) ...

weixin_30647065的博客 68

MySQL全文索引实现简单版搜索引擎实例代码

主要给大家介绍了关于MySQL全文索引实现简单版搜索引擎的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

SQL Server 2005全文检索技术在网站上的应用实录

一、前言“人类失去搜索,世界将会怎样?”,同样,很难想象一个拥有极大信息量的行业网站门户没有站内全文搜索将会出现怎样的局面,网站全文检索对于挖掘网站信息和整合网站资源的价值是不言而喻的。我们看到,通用型的搜索引擎已经成为了互联网世界的门户,而对于一个信息量极其丰富的网站而言,全网搜索或许会成为本网站的门户,正是所谓的门户之门。  实现网站全文检索有几种常见方案,比如应用数据库全文检索,开源搜索

canduecho的专栏 949

SQL Server 2000 全文检索技术

 SQL Server 2000 全文检索技术1 全文检索及其发展状况随着海量信息的出现以及计算机存储技术的发展,文献数据库正由书目数据库向全文数据库转变。这一转变使得全文检索技术得到空前的发展。常用的实现全文检索的方法主要有以下两种:第一种方法是不对数据库建立索引而直接对文章进行匹配的方法。这种方法由于没有建立索引库,因此所占空间较少,但同时正是因为它没有索引库,所以在进行全文匹配时要花

小人物的专栏 1000
上一篇: C++点点1
下一篇: SQL Server 全文检索技术 1
GZFStudy
博客等级 码龄20年 42粉丝 62原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值