SQL Server 2005全文检索技术

合集下载

SQL Server 2005全文检索在数据查询中的应用

SQL Server 2005全文检索在数据查询中的应用

MS T S L服务负责进行 以下操作。 FEQ
()填 充 和 管 理 全 文 目录 。 1
()使在 S LS r r 2 Q ev 数据库 中对表进行全文搜索更 简单 。 e M FE Q S r S L负责从表 中访问和筛选数 据及进行 断字 和词干 分析的组件组成 ,包括下列组件 如表 1 所示 。 S LS re 0 5中 的全 文 搜 索 的体 系 结 构_ 如 图 1所 Q e r20 v 2 _
a ay i l r gi f r t n t e if r t n a e t n n omai n s c r y c n r l p l ai n W i e su y o e u e o n lssf t i n o ma i , h n o ma i g n d i fr t e u t o to p i t s. t t t d ft s f i en o o a o i a c o hh h
Abtat F let erhi t h n l tx d t a ema betn i tem jreh ooybs f n igif mao , src : uh x sac ade et a s h i ojca d s h ao t n l aeo dn o t n so a t n , c g i f nr i
要 技 术 基 础 。对 S LSre 0 5全 文 检 索 功 能 的使 用方 法进 行 了研 究 ,并 利 用 A PN T技 术 对 全 文检 索 功 能 进 行 Q evr 0 2 S .E
应用。
关键 词 : 全 文 目录 ; 文 索 引 ; 文 查 询 ; S .E 全 全 A PN T
1 引言
S LSre 0 5能够 实现对 数据库 表 中的纯 字符 数据进 Q e r 0 v 2

SQL Server 2005_索引

SQL Server 2005_索引

数据库
数据文件 .mdf或.ndf 事务日志文件 .ldf

区:64 KB 数据 页:8 KB
数据的查找
数据如何查找
表扫描
使用索引
数据页
Page 4
Con Funk White ... ... ... ... ... ... ...
Page 5
Rudd White Barr
... ... ... ... ... ... ...
Page 6
Akhtar Funk Smith Martin ...
... ... ... ... ...
Page 7
Smith Ota Jones
... ... ... ... ... ... ...
Page 8
Martin Phua Jones Smith ...
... ... ... ... ...
非聚集索引的结构示意图
object_id
根节点 上一页 下一页 索引行 非 索引页 聚 集 叶节点
键值+行定位符
index_id > 1
root_page
索 上一页 下一页 索引行 上一页 下一页 索引行 上一页 下一页 索引行 引
索引页
堆 数据页 或 上一页 下一页 上一页 下一页 聚
……
数据行
INSERT member (last name) VALUES lastname = ‘Jackson' Index Pages
Akhtar … Martin Akhtar Ganio Jackson … Lang Smith …
Non-Leaf Level
Leaf Level Leaf Level

第1章 SQL Server 2005 概述

第1章 SQL Server 2005 概述

2022/9/3
17 / 25
外围应用配置器
外围应用配置器用于启用、禁用、开始和停止 SQL Server 安装的一些功能、服务和远程连接。 如需要开启或管理这些应用时,通过SQL Server 外围应用配置器将这些应用打开或进行管理,实 现数据库实例的更多控制。 单击“SQL Server 2005”→“配置工 具”→“SQL Server外围应用配置器” ,启动外 围应用配置器。即可对数据库服务和连接的运行 状态进行配置。
2022/9/3
15 / 25
SQL Server 其他管理工具
报表服务配置器 外围应用配置器 数据库引擎优化顾问 事件探察器 命令行实用工具 Visual Studio 2005
2022/9/3
16 / 25
报表服务配置器
使用Reporting Services配置工具可以配置 SQL Server 2005 Reporting Services的安装。 如果使用“仅文件”安装选项安装报表服务器, 必须使用此工具来配置服务器,否则服务器将不 可用。 如果使用默认配置安装选项安装报表服务器, 可以使用此工具来验证或修改在安装过程中指定 的设置。
SQL Server 2005数据库平台包括关系型数 据库、复制服务、通知服务、集成服务、分析服 务、报表服务、管理工具、开发工具。
2022/9/3
6 / 25
SQL Server 2005应用功能
○ .NET Framework集成 ○ Web Services ○ ○ 快照隔离支持 ○ SQL管理对象 ○ XML技术
2022/9/3
22 / 25
Visual Studio 2005
在解决方案资源管理器中管理某个解决方案中 所有不同的项目。 使用属性窗口可查看和更改在编辑器和设计器 中打开的对象的属性。 工具箱显示在商业智能项目中使用的各种项。 当前使用的设计器或编辑器不同,工具箱中的选 项卡和项也会有所不同。 设计器是创建或修改商业智能对象的工具窗口。 设计器提供对象的代码视图和设计视图。打开项 目中的某个对象时,该对象在此窗口的设计器中 打开。

SQL Server 全文索引查询

SQL Server 全文索引查询

SQL Server 全文索引查询T-SQL学习笔记之一(Full-text index)2009-12-11 11:29引言这段时间为了提高海量字符串数据的查询效率,我对字段添加了全文索引。

首先全文索引相对于传统的索引是有区别的,这是因为传统的索引主要是以首字母开始建立的索引,处理like 'keword%'这样的查询会很高效,但是如果查询时不限定首字母,而只是包含某个词,比如like '%keyword%'这样的查询,实际操作中无法使用传统索引加速查询效率,而只能一项一项比较了。

而全文索引正是提供了“包含”式查询机制,查询一个长字符串中是否包含给定关键词的功能,这无论是在搜索引擎或是网站的搜索平台都是很有用处的。

首先,推荐一本学习SQL Server全文索引的书籍,这本书详细的讲解了全文索引的方方面面,甚至还阐述许多设计搜索引擎的思想和方法。

书名是《Pro Full-Text Search in SQL Server 2008》,是Apress出版的。

这本书的内容是按章划分的,同时由浅入深,从一般的技巧到高级的技巧。

我这里就简单分享一下基本的全文查询方法,更多高级的技巧应该在实际应用中按需进行学习。

要实现全文查询,首先安装的SQL Server实例要支持全文查询服务,可以查看windows服务是否有全文索引服务。

如果没有,则要重新安装SQL Server并选择添加功能,将Full-Text功能选中,然后再安装或升级。

有了全文查询服务,还不能直接进行查询,需要先在想要建立全文索引的字段上建立一个全文索引。

方法是打开企业管理器,选择字段所在表格,然后点击右键,选择"Full-text inde”,然后选择"define Full-text index"就能进入设置面板。

需要注意的是,全文索引只能建立在Unique(唯一)字段上,并且每个表最多只能有一个全文索引字段,因此要慎重。

第1章SQLServer2005入门教程

第1章SQLServer2005入门教程
4
后来,Ashton-Tate公司退出了SQL Server 的开发。
而在Windows NT推出后,Microsoft与 Sybase在SQL Server的开发上就分道扬镳 了:
–Microsoft将SQL Server 移植到Windows NT系统上,专注于开发推广SQL Server的 Windows NT版本;
32
•在IIS中配置SQL XML支持(Configure SQL XML Support in IIS)
•IIS(Internet Information Services 因 特网信息服务),此工具可以在运行IIS的 计算机上定义、注册虚拟目录,并在虚拟目 录和SQL Server 实例之间创建关联。
9
客户机/服务器方式
客户机/服务器方式是在后端使用专门的 服务器,在服务器中建立大型数据库系 统,如常用的SQL Server, Oracle和 Informix等,该服务器称为数据库服务器. 前端客户应用系统可以是各种软件工具 开发的系统。
10
文件服务器和客户机/服务器 方式的比较
文件服务器方式: 客户端向文件服务器 发出数据库请求,文件服务器通过网络 向客户端发送完成的文件拷贝,造成网 络中传输冗余的数据,负载多.
19
2. 新的数据类型
• SQL Server 2005 中增加了3 种新的数据类型: BIGINT、SQL_VARIANT和TABLE。
3. 数据行中的Text类型数据
• SQL Server 2005 中可以将TEXT 和IMAGE 类型 的数据直接存放到表的数据行中,而不是存放到 数据页中,这就减少了用于存储TEXT 和IMAGE 类型的空间,并相应减少了磁盘处理这类数据的 I/O 数量。

如何用C#实现数据库全文检索

如何用C#实现数据库全文检索

如何用C#实现数据库全文检索目前行业网站的全文检索的方式主要有两种方式一:通过数据库自带的全文索引方式二:通过程序来自建全文索引系统以Sql Server 2005为例2005本身就自带全文索引功能,你可以先对数据库表建立索引,具体如何建索引网上搜索一下,建立完索引之后,你就可以用SQL来实现检索功能,例如:select * from ytbxw where contaiins(字段,' 中国');多个查询值之间可以用and 或or来实现,在单表以及单表视图上建全文索引对2005来说根本不是问题,但在多表视图建全文索引2005目前还无法实现这个功能,拿为例,其每个栏目的信息都是分开存放的,所以在检索上就无法用该方法来解决这个问题.下面重点说一下如何用程序来实现检索功能如果你想自己开发一个全文检索系统,我想这是相当复杂事情,要想实现也不是那么容易的事情,所以在这里我推荐一套开源程序,那就是 DotLucene,我想大家可能都听过这个东东吧,那我就讲讲如何来实现多表情况下的全文检索.1、新建winform项目,把.dll添加到该项目中来2、创建一个类,类名可以自己取public class Indexer{private IndexWriter writer;//在指定路径下创建索引文件public Indexer(string directory){writer = new IndexWriter(directory, new StandardAnalyzer(), true); writer.SetUseCompoundFile(true);}//将信息添加到索引文件中/*Field.Text:为索引+读取Field.UnIndexed:不需要做索引*/public void AddHtmlDocument(string path,string title,string content) {Document doc = new Document();doc.Add(Field.Text("text", content));doc.Add(Field.UnIndexed("path", path));doc.Add(Field.Text("title", title));writer.AddDocument(doc);}//解析HTML,过滤HTML代码private string parseHtml(string html){string temp = Regex.Replace(html, "<[^>]*>", "");return temp.Replace("&nbsp;", " ");}//从页面中获取文章标题private string getTitle(string html){Match m = Regex.Match(html, "<title>(.*)</title>");if (m.Groups.Count == 2)return m.Groups[1].Value;return "(unknown)";}//添加新闻到索引public void AddNews(){//从数据库获取记录(这部分略过)for (int i = 1; i <= PageSize; i++){RootId =int.Parse(dr["ClassId"].ToString().Substring(0, 2));// 写入索引parseHtml(dr["Content"].ToString()));}/info/}//关闭索引public void Close(){writer.Optimize();writer.Close();}}以上就是建立索引的过程,在数据读取的时候最好分披读,比如一次300条,这样效率会比较高.。

sql_server_2005数据库查询

sql_server_2005数据库查询

数据库查询是数据库中一个最重要也是最基本的功能,它是从数据库中检索符合条件的数据记录的选择过程。

SQL Server 2005的数据库查询使用T-SQL语言,其基本的查询语句是SELECT 语句。

SELECT [ALL|DISTINCT] [ TOP <operator> ][<column_name >] [AS< column_name >] [, [<column_name >] <Select operator >[AS < column_name >]…]FORM[<database_name >] < table_name >[[AS]Local_Alias] [[INNER | LEFT [OUTER] | RIGHT [OUTER] | FULL [OUTER]JOIN[ <database_name>] <table_name> [[AS]Local_Alias][ON<联接条件> ]][INTO <select> |TO FILE <file_name> [ADDITIVE]| TO PRINTER [PROMPT] | TO SCREEN][PREFERENCE PreferenceName][NOCONSOLE][PLAIN][NOW AIT][WHERE < operator 1> [AND < operator 2>…][AND | OR < operator >…]][GROUP BY < operator > ][, < operator > …]][HA VING ]< operator > ][UNION [ALL] <SELECT column_name > ][ORDER BY < column_name > [ASC |DESC] [, < column_name >8.1.1 选择列选择列指的是通过限定返回结果的列组成结果表。

SQL Server 2005的相关基础知识

SQL Server 2005的相关基础知识

本章主要介绍SQL Server 2005的相关基础知识,包括:●SQL Server的发展历史;●SQL Server 2005各版本的应用环境与功能比较、SQL Server 2005的新特性;●安装Microsoft SQL Server 2005的硬件条件和软件环境;●Microsoft SQL Server 2005的安装与卸载;●Microsoft SQL Server 2005工具的简介。

2.1 SQL Server 2005简介Microsoft的SQL Server作为众多数据库软件的一种,是网络世界的一个支撑。

从20世纪80年代后期开发SQL Server,到2005年底SQL Server 2005的发布,Microsoft历经十几年的磨练,使SQL Server从无到有,从小到大,而且新一代的SQL Server 已经开始逐渐成为Windows操作系统未来的核心,成为主流数据库软件。

2.1.1 SQL Server的发展历史1987年,由Microsoft、Sybase和Aston-Tate三家公司共同开发了Sybase SQL Server。

1988年,由Microsoft公司、Sybase公司和Aston-Tate公司共同开发了运行于OS/2平台的SQL Server。

1992年,由Microsoft公司和Sybase公司共同开发了运行于Windows NT平台,包含较少的功能,与Windows集成,提供了易于操作的用户界面的桌面数据库系统SQL Server。

1994年,Microsoft公司与Sybase公司,各自开发自己的SQL Server。

前者开发基于Windows NT平台上的SQL Server,而后者开发基于UNIX平台上的SQL Server。

随后Microsoft公司推出了其独自开发的SQL Server 6.0。

本书所提的SQL Server若无特别说明,则专指Microsoft 公司开发的产品。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SQL Server 2005全文检索技术1. 前言1.1 应用背景随着我国政府和企业信息化的快速普及和发展,来自于供应链、企业生产系统、办公自动化(或公文行文)系统、人事绩效系统、财务管理系统等无一不在积累着各类数据。

不仅如此,来自于企业门户网站、通过各种手持移动设备传递的会议通知、保存在业务员笔记本和PDA中的离线产品报价和短期个人销售信息也不一而足。

可以说信息无处不在、无时不在、无设备不在,但是它们是否可以在您的手中,即政府和企业的信息系统是否可以把员工需要的信息呈送到他们的指尖之下,这恐怕是另一回事了。

信息化普遍实施后,数据获取方式、获取手段的局限,是国内信息化建设主要面临的尴尬现状。

图1:Your Data,Any Where、Any Time、Any Device. But not on your finger.1.2 主要检索技术的区别有了数据但是没有被使用,那么这些数据不应该被称为信息。

它们无非是不断充斥设备和网络的比特而已,但是如何把数据提供给必要的人员,检索技术是其中非常有效的途径之一。

本文笔者主要基于微软平台,针对SQL Server 2005提供的全文检索技术进行介绍。

与关系数据查询、多维数据库查询和基于XML的XQuery、XPath不同,全文检索技术主要处理对象是基于超大数据量的文本数据和结构化的二进制数据上类似LIKE的模糊查询。

主要区别见下表。

表1:全文检索与关系数据库查询、多维数据查询、XML查询的对比2. 全文检索技术简要介绍2.1 基本概念如上文所说,全文检索主要应用领域如下:(1)大数据量、超大数据量的结构化平文本数据和模糊匹配查找(Char、Varchar、Nvarchar)。

(2)大数据量、超大数据量的层次型XML数据展开后的查找---含模糊查找(Xml type)。

(3)标准格式的二进制非结构化Word数据的查找(VarBinary[max]、Image)。

与其他检索技术不同的是,全文检索不仅仅提供词汇层次的查询支持,而且可以根据语言环境、不同语言的特点,甚至于用户自定义的配置提供不同语义级的大容量数据模糊匹配检索支持。

为了提供语义层次的检索,SQL Server 2005的全文检索明确了如下几个概念:(1)断字符(Word Breaker):因为对于不同的语言,哪些符号可以用于词汇的分割是不同的,因此全文检索支持不同语言环境的不同断字符。

(2)标记(Token):是由断字符标识的词或字符串。

由于划分是基于特定语言完成的,因此也可以做到语义层次的支持。

(3)干扰词(Noise Word):主要是那些经常出现,但是对于检索没有多少帮助的词汇。

例如:英语中的“a”、“and”、“is”、“the”,汉语中的“的”、“不”、“以”、“了”等。

SQL Server 2005中提供配置文件,允许用户自定义自己语言、甚至与本行业、本企业的检索干扰词。

(4)词干分析器(Stemmer):通过断字符分割后,根据具体的语言和该语言的语法规程生成的特定词汇的变形。

(5)同义词:即便是同一个语言,在检索的情况下也存在同义词如何处理的问题。

如果一个检索系统不能够识别近义词,而只能识别完全匹配的词汇,那对于我们中文这种表义的语言而言会带来很大不便。

同样的,一个行业内部也有很多同义词或者是缩略语。

例如如下的词语。

广播行业:“ABC”与“英国ABC广播公司”基本上类似,但是也可能和“澳大利亚广播公司”混淆。

政府行文:“ABC”与南美的“阿根廷、巴西、智利三国”是同义词。

军事领域:“ABC”与“原子、生物、化学战”同义。

不仅如此,由于日常使用的习惯,我们在口语表达和书面语表达上也有区别,这个也需要预先定义。

例如,很多口头常用的技术产品“Win2K”、“WinXP”等,虽然说起来很习惯,但是在行文的时候,一般都很正式的称为“Windows 2000”和“Windows XP”,因此SQL Server 2005上也提供类似词汇替换的支持,而且这些支持也是与具体语言相关的。

2.2 SQL Server 2005全文检索的技术架构SQL Server 2005的全文检索其实是由三个进程共同完成的,它们的总体逻辑架构如下:图2:SQL Server 2005的总体逻辑架构其中,三个进程分别为:(1)SQL Server process (Sqlservr.exe)(2)Microsoft Full-Text Engine for SQL Server process (Msftesql.exe) (3)Microsoft Full-Text Engine Filter Daemon process (Msftefd.exe)Msftefd主要是负责监控Msftesql进程,同时从具体的数据源根据通过使用对应的过滤器,把其中的文本信息根据断字符拆分成词汇列表(Wordlist)反馈给Msftesql进程。

整个全文检索的简要执行过程如下:(1)从客户端发送的全文查询会转到 SQL Server 进程中的 SQL Server 查询处理器。

(2)查询处理器再将它传递给全文查询组件,该组件将创建 OLE DB 命令树,并将它发送到 Microsoft Full-Text Engine for SQL Server (MSFTESQL) 服务。

(3)在 MSFTESQL 进程中,全文引擎查询处理器将使用同义词库和干扰词文件以及断字符和词干分析器来处理查询。

(4)处理此查询之后,MSFTESQL 服务将结果集返回到 SQL Server 进程。

此结果集可以用于进一步进行处理,也可以返回到客户端。

3. 规划您的全文检索由于全文检索概念相对较多,与多数读者日常接触的关系数据库查询有所区别,因此上文笔者简单介绍了SQL Server全文检索技术的几个要点,下面笔者介绍一下面对国际化趋势,在本政府或企业的分布式异构信息系统环境下,如何规划全文检索服务的建设。

3.1 全文检索服务的需求收集抛开其他需求分析内容不谈,仅全文检索服务自身就有很多特定的需求需要明确,下面是笔者列举的一些内容。

功能性的需求:(1)哪些业务数据需要提供全文的检索服务?(2)这些业务数据中那些关键信息是业务人员关心的?(3)需要支持哪些国家的语言?(4)有哪些行业术语、常用缩略词、替换词?(5)需要哪些检索功能,分别基于什么范畴的关键字展开检索?非功能性的需求:(1)业务上以前是否尝试过关系数据库查询、多维数据分析解决手头的问题?(2)检索时效性要求。

(3)习惯的检索操作平台(浏览器 / 桌面),查询结果的展示方式。

(4)授权控制。

(5)查询结果的导出和发布方式要求。

3.2 全文检索服务的需求分析作为系统分析人员,在收集到这些信息后,需要从技术的角度考虑现有的技术储备是否可以完成业务的要求,根据上面的业务需求,下面是笔者认为需要考虑的技术要点:(1)是否真的有必要使用全文检索技术,以往的关系数据库查询、多维数据分析、XML数据检索是否可以满足上述功能。

(2)用户要求的数据是否分布在不同的系统中,是否分布在不同的数据库上。

(3)数据源是否位于异构的操作系统和数据库上。

(4)不同语言的信息如何存储呢,拆分到不同的表,还是在应用层合并。

还是直接通过跨语言的同义词解决不同语言之上的关键词查找。

(5)如何选择现成的产品来集成,并完成操作台开发、信息发布、查询结果导出。

(6)通过数据库授权、证书系统授权还是应用自定义授权解决访问的安全性。

3.3 数据源的规划SQL Server 2005可以同时支持如下三种数据:(1)Char、Varchar、Nvarchar(2)XML(3)VarBinary(max)、Image对于第一种,由于都是SQL Server的内置类型,因此数据提取很容易。

对于后两种,为了保证Word、Excel、Power Point之类的格式化二进制数据可以被检索,一般在规划上还要增加伪列来标明对应的文件扩展名。

这样,可以保证SQL Server 2005全文检索的过滤器可以从对应的文件中提取出需要的文本内容,并把它通过断字符拆分成有效的词汇列表(Wordlist)。

集成方式如下:图3:标准VarBinary(max)、Image、XML类型的集成方式通过查询视图sys.fulltext_document_types可以获得已经安装的过滤器(即支持的文档类型),下面是现有SQL Server 2005默认支持的文档类型:(1).ascx、.asm、.asp、.aspx、.bat、.c、(2).cmd、.cpp、.cxx、.def、.dic、.doc、(3).dot、.h、.hhc、.hpp、.htm、.html、(4).htw、.htx、.hxx、.ibq、.idl、.inc、(5).inf、.ini、.inx、.js、.log、.m3u、.mht、(6).obd、.obt、.odc、.pl、.pot、.ppt、.rc、(7).reg、.rtf、.stm、.txt、.url、.vbs、.wtx、(8).xlb、.xlc、.xls、.xlt、.xml对于远程的SQL Server,可以通过链接服务器方式访问远端数据源的全文检索系统。

若要对链接服务器执行全文查询,必须先对远程服务器上的目标表和列创建全文索引。

然后,将远程服务器添加为链接服务器。

完成这些操作后,可以在包括CONTAINS 或 FREETEXT 这些全文查询的语句中使用,不过检索对象的命名是由四部分组成的名称对链接服务器上的目标表和列进行查询。

此外,对于以往保存在Oracle、DB2、MySQL等数据库产品上的text、image 数据,也可以通过SQL Server的复制或者集成服务来进行数据同步。

这个同步要根据文本内容的更新频率、业务许可间隔、数据类型进行配置。

常用的同步方式如下:(1)通过SQL Job,基于 ODBC/OLEDB 的分布式查询定期更新。

该方式可以视为从SQL Server端,定期批量从异构数据库“拉”出数据。

(2)通过IIOP、HTTP、Trigger + JOB、External Server等方式向SQL Server 写入。

该方式可以视为异构数据库根据配置定期向SQL Server端写入,即向SQL Server “推”数据。

(3)复制:该方式可以提供更为实时的同步,即可以通过具有事务性(Transactional)的单票数据更新实现,也属于向SQL Server “推”数据。

(4)通过中间介质 Export / Import:通过平文本之类的中间介质,配合FTP、Queue等发送方式,完成异构数据库的导出和SQL Server端的异步入库。

相关文档
最新文档