数据库 全文检索

SQL Server 2000 的Standard Edition 和Enterprise Edition 版本提供了对表数据中字符串的复杂检索功能---全文检索(Full-Text Searches)。此功能需要在安装时通过自定义安装选项来添加。

10.7.1 全文索引和目录
全文检索是通过使用全文索引(Full-Text Index)来实现的。一个全文索引中存储了表的数据中有确切含义的字符串以及其在表的列中的位置等信息。全文检索就是利用全文索引中的信息查找含有特定字符串的数据行。

全文索引包含在全文索引目录中(Full-Text Catalogs),通常是由同一数据库中的一个或多个表的全文索引构成一个全文索引目录。一个表只能有一个全文索引,因此每个有全文索引的表只隶属于一个全文索引目录。一个数据库可以包含一个或多个全文索引目录,但一个全文索引目录也只能隶属于一个数据库。全文索引目录和全文索引尽管是由SQL Server 来管理,但是并不存放在数据库文件中,而是与Microsoft Search 服务相关的操作系统文件。

在使用全文索引查询时,SQL Server 将检索条件发送给Microsoft Search 服务。MicrosoftSearch 服务将找出所有符合全文检索条件的值,并将它们返送给SQL Server SQL Server就根据这些值来决定将处理表的哪些数据行。因此,必须启动Microsoft Search 服务才能
使SQL Server 具有全文检索的功能。

启动Microsoft Search 服务的方法有两种:
(1) 用Enterprise Manager 启动
在Enterprise Manager 的Support Services 目录树文件夹中用右键单击“Full-TextSearch”,从快捷菜单中选择“Start”项,即可启动。启动后如图10-1 所示。
(2) 用操作系统控制面板中的服务管理程序启动
在Win2000 Server 和Windows NT 确认中都可以从控制面板的“管理工具Administrative Tools”下的“服务”界面中右键单击所要启动的服务“Microsoft Search”,从快捷菜单中选择“启动”选项,就会启动Microsoft Search 服务,启动后画面如图10-2所示。

10.7.2 创建全文索引目录
在企业管理器中创建全文索引目录的步骤如下:
(1) 在企业管理器的目录树中选择要创建全文索引目录的数据库,将其展开,右键单击“Full-Text Catalogs” 对象从快捷菜单中选取“New Full-Text Catalogs”,则会出现如图10-3 所示的新建全文索引目录对话框。
(2) 在图10-3 所示的对话框中输入要创建的全文索引目录名称和文件存放位置SQLServer 默认的存放目录是“安装目录\MSSQL\FTDATA”,在此目录下将为每个全文索引目录单独创建一个目录,目录名称与图10-3 中指定的名称不同,是由系统生成的。单击“Schedules” 页框,则会出现如图10-4 所示的全文索引目录计划对话框。
(3) 在图10-4 中可以创建、编辑全文索引目录执行计划。单击“确定”按钮,则创建全文索引目录。

图10-4 创建全文索引目录计划对话框

10.7.3 创建全文索引
创建全文索引的步骤如下:
(1) 在企业管理器中选择要创建全文索引的数据库,或表单击右键,从快捷菜单中选择“New Full-Text Indexes”, 则会出现如图10-5 所示的全文索引创建向导界面。

(2) 单击“下一步”按钮,出现如图10-6 所示的选择要创建全文索引的表对话框。

(3) 单击“下一步”按钮,出现如图10-7 所示的选择表中的惟一索引对话框。

(4) 单击“下一步”按钮,出现如图10-8 所示的选择组成索引的列的对话框。
(5) 单击“下一步”按钮,出现如图10-9 所示的选择或新建全文索引目录对话框。
(6) 单击“下一步”按钮,出现如图10-10 所示的选择或新建编辑全文索引目录。执行计划或表计划对话框。单击“New Catalog Schedule” 按钮,则出现如图10-11 所示的新建全文索引目录执行计划对话框。其它编辑、新建执行计划对话框与此类似。

图10-8 选择组建全文索引的列的对话框



图10-11 新建全文索引目录执行计划对话框
(7) 单击“下一步”按钮,出现如图10-12 所示的结束全文索引创建向导对话框。单击“完成”按钮,则SQL Server 开始在后台运行程序,定义全文索引,程序完成后显示如图10-13 所示的定义全文索引成功对话框。此对话框告诉用户全文索引已经定义,但是还没有植入键值。

(8) 单击“OK” 按钮。在企业管理器中选取所创建的全文索引所在的全文索引目录,单击右键,从快捷菜单中选取“Start Full Population” 选项,完成全文索引的创建过程。
注意:全文索引与一般的索引不同,它不会随着数据的更新而更新,因此必须经常或使用执行计划去更新它,其更新会占用许多系统资源和时间。

图10-13 定义全文索引成功对话框

10.7.4 全文检索查询
在一个表中创建了全文索引后,才可以对表中的数据进行全文检索。进行全文检索需
要在SELECT 命令的WHERE 字句中使用两个Transact-SQL 谓词:CONTAINS 和FR
ETEXT。
(1) CONTAINS
CONTAINS 谓词的语法如下
CONTAINS ( { column_name | * } , '< contains_search_condition >' )
< contains_search_condition > ::=
{ < simple_term >
| < prefix_term >
| < generation_term >
| < proximity_term >
| < weighted_term >
}
| { ( < contains_search_condition > )
{ AND | AND NOT | OR } < contains_search_condition > [ ...n ]
}

其含义是检索列中包含有符合< contains_search_condition >检索条件的信息。其中
“column_name” 必须是包含在全文索引中的列,“*” 表示检索条件应用到所有包含在全文索引中的列上。CONTAINS 谓词的含义与LIKE 谓词相似,但CONTAINS 谓词的功能更强大,支持更多的查询方,式且对大小写不敏感。


本章小结
本章的大部分内容都在讲述SELECT 语句的应用。精通SELECT 语句等于攻克了SQL语言的半壁江山。如果再能将下一章“数据库更新”中的语句熟练运用,那么就基本掌握了SQL 语言。

时间: 2024-09-28 22:16:22

数据库 全文检索的相关文章

MS SQL基础教程:数据库全文检索

SQL Server 2000 的Standard Edition 和Enterprise Edition 版本提供了对表数据中字符串的复杂检索功能---全文检索(Full-Text Searches).此功能需要在安装时通过自定义安装选项来添加. 10.7.1 全文索引和目录 全文检索是通过使用全文索引(Full-Text Index)来实现的.一个全文索引中存储了表的数据中有确切含义的字符串以及其在表的列中的位置等信息.全文检索就是利用全文索引中的信息查找含有特定字符串的数据行. 全文索引包

深度解析MySQL 5.7之中文全文检索_Mysql

前言 其实全文检索在MySQL里面很早就支持了,只不过一直以来只支持英文.缘由是他从来都使用空格来作为分词的分隔符,而对于中文来讲,显然用空格就不合适,需要针对中文语义进行分词.这不,从MySQL 5.7开始,MySQL内置了ngram全文检索插件,用来支持中文分词,并且对MyISAM和InnoDB引擎有效. 在使用中文检索分词插件ngram之前,先得在MySQL配置文件里面设置他的分词大小,比如, [mysqld] ngram_token_size=2 这里把分词大小设置为2.要记住,分词的S

MS SQL Server入门教程

SQL Server 是一个关系数据库管理系统,它最初是由Microsoft,Sybase和Ashton-Tate三家公司共同开发的,于1988年推出了第一个OS/2版本.在Windows NT推出后,Microsoft与Sybase在SQL Server的开发上就分道扬镳了,Microsoft将SQL Server 移植到Windows NT. MS SQL基础教程:SQL Server 2000 简介 MS SQL基础教程:SQL Server 2000 的新特性 MS SQL基础教程:SQ

中大型网站架构演变之路

前言 网上有很多文章类似于我今天要分享的课程,有架构师写的,有运维写的,还有开发些的,偏重点都不同,今天我以咱们运维角度全面讲解. 一个成熟的网站架构并不是一开始设计就具备高可用.高伸缩.高性能等特性的,它是随着用户量和业务线不断增加,基础架构才逐渐健壮的.在发展初期,一般都是从0到1,不会一上来就整一些大而全的架构,也很少人这么任性. 说明 适用业务:电商/门户/招聘网站 开发语言:PHP和JAVA Web服务:Nginx/Tomcat8 数据库:MySQL 操作系统:CentOS 物理服务器

OpenSearch:轻松构建大数据搜索服务

随着互联网数据规模的爆炸式增长,如何从海量的历史.实时 数据中快速获取有用信息,变得越来越具有挑战性.搜索是获取信息最高效的途径之一,因此也是各类网站.应用的基础标配功能.开发者想在自己的产品中实现搜索功能一般都是基于某个开源搜索系统(如ElasticSearch.Solr.Sphinx)搭建搜索服务.然而,除了购买主机或托管服务器,从系统熟悉.服务搭 建.功能定制,再到服务上线,通常需要耗费较长时间. 云搜索是一种结构化数据的搜索托管服务,开发者可将数据上传至云端进行数据处理和索引构建,再通过

谁有mysql分布式数据库关于全文检索的解决方案?

问题描述 例如微博.社区的全文检索.谢谢. 解决方案 解决方案二:该回复于2010-12-09 12:56:43被版主删除解决方案三:关注这个内容.

在应用中加入全文检索功能——基于Java的全文索引引擎Lucene简介

全文检索|索引 内容摘要: Lucene是一个基于Java的全文索引工具包. 基于Java的全文索引引擎Lucene简介:关于作者和Lucene的历史 全文检索的实现:Luene全文索引和数据库索引的比较 中文切分词机制简介:基于词库和自动切分词算法的比较 具体的安装和使用简介:系统结构介绍和演示 Hacking Lucene:简化的查询分析器,删除的实现,定制的排序,应用接口的扩展 从Lucene我们还可以学到什么 基于Java的全文索引/检索引擎--Lucene Lucene不是一个完整的全

数据库案例集锦 - 开发者的《如来神掌》

背景 「剑魔独孤求败,纵横江湖三十馀载,杀尽仇寇,败尽英雄,天下更无抗手,无可柰何,惟隐居深谷,以雕为友.呜呼,生平求一敌手而不可得,诚寂寥难堪也.」 剑冢中,埋的是剑魔独孤求败毕生几个阶段中用过的几柄剑: 利剑无意:第一柄是青光闪闪的利剑,凌厉刚猛,无坚不摧,弱冠前以之与河朔群雄争锋. 软剑无常:第二柄是紫薇软剑,三十岁前所用,误伤义士不祥,悔恨不已,乃弃之深谷. 重剑无锋:第三柄是玄铁重剑,重剑无锋,大巧不工,四十岁之前恃之横行天下. 木剑无俦:第四柄是已腐朽的木剑. 无剑无招:四十岁后,不

2016全球最强数据库大盘点

数据库排名年度盘点 说到盘点,首先肯定得看看DB-Engines的全球数据库排名.下表是2017年1月份前20名数据库引擎最新排名. DB-Engines 2017-01数据库前20名列表DB-Engines 2017-01数据库前20名列表 ​DB-Engines这个排名在业界引用得非常多,权威性也很高,总体来说比较客观,它不像很多咨询机构采用市场调查,或者某个数据库厂商发布的数据,而是通过以下6个方面的统计数据来综合评估各个数据库产品得分并给出综合排名: 数据库相关网站数量(当前通过goog