设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 3379|回复: 1
打印 上一主题 下一主题

[与其它组件] [转帖]SQL Server 2000中全文检索的使用

[复制链接]

点击这里给我发消息

跳转到指定楼层
1#
发表于 2004-7-6 09:51:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
转自:http://www.winmag.com.cn/forum/bestview.asp?boardid=11&id=487

作者:net2004



SQL Server 2000中全文检索的使用(1)





引言



微软的SQL Server数据库是一个在中低端企业应用中占有广泛市场的关系型数据库系统,它以简单、方便、易用等特性深得众多软件开发人员和数据库管理人员的钟爱。但SQL Server 7.0以前的数据库系统由于没有全文检索功能,致使无法提供像文本内容查找此类的服务,成为一个小小的遗憾。从SQL Server 7.0起,到如今的SQL Server 2000终于具备了全文检索功能,使用户可以高效地检索存储在数据库char、varchar、text、ntext、nchar、nvarchar等数据类型列中的文本数据。



建立全文索引



在进行全文检索之前,必须先建立和填充数据库全文索引。为了支持全文索引操作,SQL Server 7.0新增了一些存储过程和Transact-SQL语句。使用这些存储过程创建全文索引的具体步骤如下(括号内为调用的存储过程名称):



1. 启动数据库的全文处理功能(sp_fulltext_database);;



2. 建立全文检索目录(sp_fulltext_catalog);



3.在全文检索目录中注册需要全文索引的表(sp_fulltext_table);



4. 指出表中需要全文检索的列名(sp_fulltext_column);;



5. 为表创建全文索引(sp_fulltext_table);;



6. 填充全文检索目录(sp_fulltext_catalog)。



下面举例说明如何创建全文索引,在本例中,对Test数据库Book表中Title列和Notes列建立全文索引。
  1. use test //打开数据库



  2. //打开全文索引支持,启动SQL Server的全文搜索服务



  3. execute sp_fulltext_database ‘enable’



  4. //建立全文检索目录ft_test



  5. execute sp_fulltext_catalog 'ft_test', 'create'
复制代码
为Title列建立全文索引数据元,pk_title为Book表中由主键所建立的唯一索引,这个参数是必需的。
  1. execute sp_fulltext_table 'book', 'create', 'ft_test', 'pk_title'



  2. //设置全文索引列名



  3. execute sp_fulltext_column 'book', 'title', 'add'



  4. execute sp_fulltext_column 'book','notes', 'add'



  5. //建立全文索引



  6. execute sp_fulltext_table 'book', 'activate'



  7. //填充全文索引目录



  8. execute sp_fulltext_catalog 'ft_test', 'start_full'
复制代码
至此,全文索引建立完毕。



进行全文检索



SQL Server 2000提供的全文检索语句主要有CONTAINS和FREETEXT。CONTAINS语句的功能是在表的所有列或指定列中搜索:一个字或短语;一个字或短语的前缀;与一个字相近的另一个字;一个字的派生字;一个重复出现的字。



CONTAINS语句的语法格式为:
  1. CONTAINS({column | *}), <contains_search_condition>)
复制代码

本帖被以下淘专辑推荐:

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖1 订阅订阅

点击这里给我发消息

2#
 楼主| 发表于 2004-7-6 09:52:00 | 只看该作者
SQL Server 2000中全文检索的使用(2)





其中,column是搜索列,使用“*”时说明对表中所有全文索引列进行搜索。Contains_search_condition 说明CONTAINS语句的搜索内容,其语法格式为:
  1. {<simple_term>|<prefix_term>|<proximity_term>|<generation_term>|<weighted_term>}[{{AND|AND NOT|OR}<contains_search_condition>}] [...n]
复制代码
下面就simple_term和prefix_term参数做简要说明:



simple_term是CONTAINS语句所搜索的单字或短语,当搜索的是一个短语时,必须使用双引号作为定界符。其格式为:



{'word'|" phrase"}



prefix_term说明CONTAINS语句所搜索的字或短语前缀,其格式为:



{"word*" | "phrase*"}



例如,下面语句检索Book表的Title列和Notes列中包含“database”或“computer”字符串的图书名称及其注释信息:
  1. select title, notes

  2. from book

  3. where contains(tilte, 'database') or contains(notes,'database')

  4. or contains(title,'computer') or contains(notes,'computer')
复制代码
FREETEXT语句的功能是在一个表的所有列或指定列中搜索一个自由文本格式的字符串,并返回与该字符串匹配的数据行。所以,FREETEXT语句所执行的功能又称做自由式全文查询。



FREETEXT语句的语法格式为:FREETEXT({column | * },'freetext_string')



其中,column是被搜索列,使用“*”时说明对表中的所有全文索引列进行搜索。Freetext_string参数指出所搜索的自由文本格式字符串。



例如,下面语句使用FREETEXT语句搜索Book表中包含“Successful Life”字符串的数据行:
  1. select title, notes

  2. from book

  3. where freetext(*, 'Successful Life')
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-30 15:47 , Processed in 0.095011 second(s), 27 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表