SQLserver2008全文检索使用方法
- 格式:doc
- 大小:306.00 KB
- 文档页数:8
在SQL Server中,要查询数据库文件的信息,可以使用以下几种方法:1. 使用系统视图`sys.database_files`:```sqlSELECT * FROM sys.database_files;```这个视图包含了所有数据库文件的详细信息,包括文件名、文件类型、大小等。
2. 使用系统视图`sys.master_files`:```sqlSELECT * FROM sys.master_files;```这个视图也包含了数据库文件的信息,并且对于每个数据库,只有一个记录。
3. 使用`DBCC CHECKDB`命令:```sqlDBCC CHECKDB ('数据库名') WITH NO_INFOMSGS, ALL_ERRORMSGS;```这个命令不仅可以检查数据库的完整性,还可以获取数据库文件的信息。
4. 使用`系统表`:在SQL Server的早期版本中,可以通过查询系统表来获取数据库文件信息,例如`msdb..sysfiles`。
但是,在SQL Server 2005及以后的版本中,推荐使用系统视图。
5. 使用`SELECT`语句查询`INFORMATION_SCHEMA.TABLES`和`INFORMATION_SCHEMA.COLUMNS`:```sqlSELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'Base Table';SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '表名';```这些查询可以获取数据库中表的基本信息和列的信息,但不会直接提供文件信息。
查询数据库文件信息时,需要具有足够的权限,通常是数据库的`sysadmin`角色或相应的权限。
MS SQLSERVER 2008数据库使用手册
一、导入数据库架构
1、打开本地计算机上的SQL Server Management Studio 客户端软件:
2、登陆本机数据库控制端:
3、选择生成SQL脚本:
4、选中需要导出脚本的库名:
5、选择兼容sql2005的版本的脚本:
6、修改sql脚本的保存路径:
7、查看生产脚本生成的选项:
8、成功生成sql脚本:
9、等待脚本生成完毕,进入存放目录用记事本打开脚本文件,修改库名为万网提供的数据库名,并
确保您的脚本中所有者是DBO,否则请替换成DBO:
10、连接到万网提供的目标数据库服务器:
注:IP一项也可以填入数据库服务器的域名:us*-**(us******)
11、并点击新建查询,拷贝您记事本中的SQL 脚本代码到上图显示的查询分析器中,点击分析脚本,如果没有语法错误,就点击执行脚本,直到执行完毕。
到此,您的数据库架构已经完整的导入到万网的数据库服务器。
二、下面咱们开始导入数据库表中的数据:
1、登陆您本地的数据库:
2、点击您本地计算机上的数据库右键-任务-导出数据:
3、选择目标数据库,如下添加万网提供给您的数据库信息(服务器地址,用户名,密码,数据库):
4、点击下一步:
5、点击下一步,选中所有表,并确保“目标”中是DBO 的所有者:
6、点击下一步:
7、点击下一步,直到执行完毕:
8、成功导入数据:
到此,您的库已经完整的导入到万网提供的数据库服务器中,您可以用程序进行调用读取了。
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(唯一)字段上,并且每个表最多只能有一个全文索引字段,因此要慎重。
sqlserver2008查询语句SQL Server 2008是一种关系型数据库管理系统,它支持使用SQL 语言进行数据查询和操作。
在本文中,我们将列举一些常用的SQL Server 2008查询语句,以帮助读者更好地了解和使用这个数据库管理系统。
1. 查询表中的所有数据SELECT * FROM table_name;这个查询语句可以用来查询指定表中的所有数据。
其中,table_name是要查询的表的名称。
2. 查询表中的部分数据SELECT column1, column2, ... FROM table_name WHERE condition;这个查询语句可以用来查询指定表中符合条件的部分数据。
其中,column1, column2, ...是要查询的列的名称,condition是查询条件。
3. 查询表中的唯一数据SELECT DISTINCT column1, column2, ... FROM table_name;这个查询语句可以用来查询指定表中唯一的数据。
其中,column1, column2, ...是要查询的列的名称。
4. 对查询结果进行排序SELECT column1, column2, ... FROM table_name ORDER BY column_name ASC|DESC;这个查询语句可以用来对查询结果进行排序。
其中,column1, column2, ...是要查询的列的名称,column_name是要排序的列的名称,ASC表示升序排列,DESC表示降序排列。
5. 对查询结果进行分组SELECT column1, column2, ... FROM table_name GROUP BY column_name;这个查询语句可以用来对查询结果进行分组。
其中,column1, column2, ...是要查询的列的名称,column_name是要分组的列的名称。
数据库中文全文检索的使用教程随着互联网的发展以及各种信息的爆炸式增长,对于数据库中文全文检索的需求也越来越迫切。
数据库中文全文检索是一种能够在数据库中对于包含中文内容的文本进行全文搜索的技术。
相较于传统的数据库检索方法,全文检索能够更准确快速地找到包含关键词的文本内容,为用户提供更加丰富和便捷的信息查询服务。
一、为什么需要数据库中文全文检索?传统的数据库检索方式往往只能对由单一或固定关键词组成的索引进行搜索。
如果用户想要搜索一个短语、一段话或一篇文章,传统数据库检索就显得格外繁琐并且不够精准。
而中文的复杂性使得采用全文检索技术在中文文本的检索中更加便捷高效。
数据库中文全文检索能够根据用户输入的关键词,迅速地找到包含这些关键词的文档,并按照相关性进行排序,从而提供更准确、全面和高效的检索结果。
此外,数据库中文全文检索也可以拥有分词功能,对中文文本进行自动分词处理,大大提高了搜索的精确度。
二、如何使用数据库中文全文检索?1.选择适合的数据库不同数据库系统拥有不同的全文检索功能,因此在使用数据库中文全文检索之前,需要根据自己的需求选择适合的数据库。
目前大部分的数据库系统都已经提供了全文检索的功能,比如MySQL、SQLServer、PostgreSQL等。
根据自己的应用场景和技术背景选择合适的数据库是使用数据库中文全文检索的第一步。
2.创建全文索引在开始使用数据库中文全文检索之前,需要先为文本字段创建全文索引。
全文索引可以理解为一个特殊的数据结构,用于加速全文搜索。
创建全文索引的具体方法和语法会根据数据库系统的不同而有所区别,但一般都会涉及到以下几个步骤:- 确定需要进行全文检索的表和字段;- 对这些字段创建全文索引;- 确保全文索引包含所需的中文分词器。
3.执行全文搜索一旦已经创建了全文索引,就可以开始进行数据库中文全文检索了。
根据数据库系统的不同,全文搜索的语法也会有所区别。
以MySQL为例,可以使用MATCH AGAINST语句进行全文搜索。
sqlserver2008使用教程SQL Server 2008是由微软公司开发的一款关系型数据库管理系统(RDBMS),用于存储和管理大量结构化数据。
本教程将向您介绍SQL Server 2008的基本功能和使用方法。
首先,您需要安装SQL Server 2008软件。
您可以从微软官方网站下载并安装免费的Express版本,或者购买商业版本以获取更多高级功能。
安装完成后,您可以启动SQL Server Management Studio (SSMS),这是一个图形化界面工具,可用于管理和操作SQL Server数据库。
在SSMS中,您可以连接到本地或远程的SQL Server实例。
一旦连接成功,您将能够创建新的数据库,更改数据库设置,执行SQL查询和管理用户权限等。
要创建新的数据库,您可以右键单击数据库节点并选择“新建数据库”。
在弹出的对话框中,输入数据库名称和其他选项,然后单击“确定”。
新的数据库将出现在对象资源管理器窗口中。
要执行SQL查询,您可以在查询编辑器中编写SQL语句。
例如,要创建一个新的表,您可以使用“CREATE TABLE”语句,并在括号中定义表的列和数据类型。
将查询复制到查询窗口中,并单击“执行”按钮来执行查询。
除了执行基本的SQL查询外,SQL Server 2008还提供了许多高级功能,如存储过程、触发器、视图和索引等。
这些功能可以提高数据库的性能和安全性。
存储过程是预编译的SQL代码块,可以按需执行。
您可以使用存储过程来处理复杂的业务逻辑或执行重复的任务。
要创建存储过程,您可以使用“CREATE PROCEDURE”语句,并在大括号中定义存储过程的内容。
触发器是与表相关联的特殊存储过程,可以在表中插入、更新或删除数据时自动触发。
通过使用触发器,您可以实现数据的约束和验证。
视图是虚拟表,是对一个或多个基本表的查询结果进行封装。
视图可以简化复杂的查询,并提供安全性和数据隐藏。
SQL Server 2008手册一、概述SQL Server 2008是微软公司推出的一款关系型数据库管理系统,它提供了强大的数据管理和分析功能,被广泛应用于企业级系统和互联网应用中。
本手册将介绍SQL Server 2008的基本概念、操作指南和最佳实践,帮助用户更好地理解和使用这一数据库管理系统。
二、SQL Server 2008的基本概念1. SQL Server 2008的架构:介绍SQL Server 2008的架构,包括数据库引擎、分析服务、报表服务等组件的作用和关系。
2. 数据库对象:介绍SQL Server 2008中常见的数据库对象,如表、视图、存储过程等,并说明它们的作用和用法。
3. 数据类型和约束:介绍SQL Server 2008支持的数据类型和约束,包括整型、字符型、日期型等数据类型和主键、外键、唯一约束等约束类型。
三、SQL Server 2008的安装与配置1. 硬件和软件要求:介绍安装SQL Server 2008所需的硬件和软件要求,包括CPU、内存、磁盘空间等方面的要求。
2. 安装步骤:详细介绍SQL Server 2008的安装步骤,包括准备工作、安装向导的操作指南和安装后的配置。
3. 实例和数据库配置:介绍如何配置SQL Server 2008的实例和数据库,包括命名实例、初始化数据库和数据库选项的配置。
四、SQL Server 2008的管理与优化1. 数据库管理:介绍如何创建、修改、删除数据库,包括数据库备份、还原和迁移等操作。
2. 查询优化:介绍SQL Server 2008的查询优化策略和技巧,包括索引的设计、查询计划的分析和性能调优的方法。
3. 日常维护:介绍SQL Server 2008的日常维护任务,包括数据库的定期备份、日志清理、统计信息的更新等。
五、SQL Server 2008的安全与权限1. 登入和用户:介绍如何创建和管理SQL Server 2008的登入和用户,包括登入的类型、用户的权限和角色的管理。
Sqlserver 全文检索功能浅解全文索引和全文检索是sql server 7.0的新增功能,它能够对数据中的字符类型列(如varchar、text等类型列)进行检索,并通过索引实现全文搜索查询。
sql server常规索引与全文检索相比,二者的区别如下:常规索引全文索引使用create index或约束定义创建通过删除或执行drop index语句删除使用全文索引存储过程创建和删除当插入、修改或删除数据时,sql server能够自动更新常规索引内容只能通过任务调度或执行存储过程来填充全文索引每个表可以建立多个常规索引,索引不能分组每个表只能有一个全文索引,同一个数据库中的多个全文索引可以组织为一个全文目录常规索引存储在数据库文件中全文索引存储在文件系统中为了支持全文索引操作,sql server 7.0新增了一些新存储过程和transact-sql语句,使用这些存储过程创建全文索引的SQL SERVER数据库全文索引的示例,以test数据库为例。
首先,介绍利用系统存储过程创建全文索引的具体步骤: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为数据库名,dbo.T_FX_DRM_20为test数据库中的一张表,FX_D20_ID是表dbo.T_FX_DRM_20中的一个列名以对test数据库的表dbo.T_FX_DRM_20的FX_D20_ID列建立全文索引,之后使用索引查询FX_D20_ID列中包含有"*****"字符串的数据:在这之前,需要安装Microsoft Search 服务,启动SQL server全文搜索服务。
mssql2008使用方法
MSSQL 2008是一种关系型数据库管理系统,用于存储和管理数据。
以下是使用MSSQL 2008的步骤:
1. 安装MSSQL 2008:首先需要安装MS SQL Server。
安装程序会询问您要安装的组件,如数据库引擎,Reporting Services和Management Studio等。
2. 配置MSSQL 2008:配置MSSQL 2008包括设置管理员密码,配置数据库实例等。
您可以用SQL Server Management Studio连接到MSSQL 2008,创建新的数据库或表,添加表列,索引等,还可以为数据库设置安全性和权限。
3. 进行数据库管理:使用MSSQL 2008,您可以通过SQL语句和管理工具执行多种任务。
例如,您可以执行备份和还原操作,定义约束,创建存储过程和触发器等。
4. 编写SQL语句:在MSSQL 2008中,您可以使用SQL语言来管理数据库。
SQL语言是一种用于定义和操作关系型数据库的标准语言。
使用SQL,您可以向数据库中添加,更新或删除数据,查询数据并执行其他任务。
总结:这是使用MSSQL 2008的基本步骤,您可以使用MSSQL 2008管理和维护各种数据库,并对您的应用程序或网站提供技术支持。
SQLServer全⽂检索(full-text)语法sql server 全⽂检索有两种搜索⽅式,⼀种是contains,另⼀种是freetext。
前者是包含,类似于like '%关键词%',后者则是将⼀段⽂字分词以后对每个词进⾏搜索。
具体语法:contains: SELECT字段1,字段2 FROM表名 WHERE contains(字段,'"词⼀" or "词⼆"') 根据查找结果的相似度排序 SELECT字段1,字段2 FROM表名 inner join containstable(表名, 字段,'"词⼀" or "词⼆"',10) as k on表名.id = k.[key] order by k.RANK DESC freetext: SELECT字段1,字段2 FROM表名 WHERE freetext(字段,'词⼀词⼆') 根据查找结果的相似度排序 SELECT字段1,字段2 FROM表名 inner join freetexttable(表名, 字段,'词⼀词⼆',10) as k on表名.id = k.[key] order by k.RANK DESC上⽂中freetexttable或containstable的10表⽰取10条数据具体详细操作:数据库数据执⾏任意⽂本查询:1.使⽤FREETEXT谓词 FREETEXT接受两个参数。
第⼀个参数表⽰要搜索的列,可以提供列名,或者⽤*字符搜索表中的所有列。
第⼆个参数表⽰要搜索的短语。
例: select Title from Titles where FREETEXT(Title,'secret computer')该SQL语句将数据库表Titles中的Title列中的内容包括secret或computer的纪录查询出来。
sqlfull_chs_2008r2SQL Server 2008 R2 是微软推出的一款关系型数据库管理系统,它具有很高的性能和可靠性,适用于各种规模的企业应用。
本文将介绍 SQL Server 2008 R2 的一些重要特性和功能。
SQL Server 2008 R2 在性能方面进行了一系列的优化和改进。
它采用了多线程架构,能够充分利用多核处理器的性能优势,提高并发处理能力。
同时,SQL Server 2008 R2 还引入了数据压缩技术,可以显著减少存储空间占用,并提高查询性能。
SQL Server 2008 R2 提供了全文搜索功能,使得用户可以更方便地进行全文检索。
全文搜索可以对文本、文档等非结构化数据进行搜索和分析,大大提高了用户的查询效率和准确性。
SQL Server 2008 R2 还引入了一些高级的数据分析和报表功能。
例如,它支持对大规模数据集进行复杂的统计分析、数据挖掘和预测分析。
同时,SQL Server 2008 R2 还具有强大的报表功能,可以生成精美的报表,并支持在线浏览和导出。
SQL Server 2008 R2 还提供了可靠性和高可用性的特性。
它支持数据库的自动备份和还原,可以保护用户的数据免受意外损坏。
同时,SQL Server 2008 R2 还支持数据库的镜像、复制和故障转移等高可用性技术,确保系统的持续稳定运行。
除了以上提到的功能外,SQL Server 2008 R2 还具有很多其他的特性。
例如,它支持多种数据类型,包括整型、浮点型、日期时间型等,满足不同应用场景的需求。
同时,SQL Server 2008 R2 还支持存储过程、触发器和视图等数据库对象,方便用户进行复杂的数据操作和业务逻辑实现。
SQL Server 2008 R2 还具有很好的安全性和可管理性。
它支持对用户和角色进行权限管理,确保只有授权的用户才能访问数据库。
同时,SQL Server 2008 R2 还提供了丰富的管理工具,如SQL Server Management Studio,方便管理员进行数据库的监控和管理。
图⽂详解SQLServer2008R2使⽤教程本⽂为⼤家分享了SQL Server 2008R2简单使⽤教程,供⼤家参考,具体内容如下1 ⾸先找到开始菜单中相关内容;如下图;安装的组件不同可能有所不同;我的电脑中包括如下项;商业智能;管理控制台;导⼊和导出数据;分析服务;集成服务;配置⼯具;⽂档和教程;性能⼯具;因为偶装的组件多;2 进⼊管理控制台⾸先是登录;服务器类型选择数据库引擎;此处先⽤Windows⾝份验证登录;3 进⼊管理控制台界⾯如下;看到数据库下有四个⼦项,系统数据库、数据库快照、ReportServer、ReportServerTempDB;因为我装了微软报表服务器,所以有ReportServer项;左侧树视图的⼀级条⽬是:数据库,安全性,服务器对象,复制,管理,SQL Server 代理;4 在数据库上右击;弹出如下菜单;包括如下⼦菜单:新建数据库,附加,还原数据库,还原⽂件和⽂件组,启动PowerShell,报表,刷新;5 选择新建数据库输⼊数据库名称;此处建⽴输电所管理信息系统数据库,名称为shudiansuo;可以设置数据库⽂件和⽇志⽂件的路径;也可默认;数据库⽂件默认属于PRIMARY⽂件组;两种⽂件的初始⼤⼩默认是3和1MB;6 点击上图左下的查看连接属性;可看到当前的连接属性;属性分四组:产品;服务器环境;连接;⾝份验证;7 右击“表”,弹出如下;包括五项:新建表;筛选器;启动PowerShell;报表;刷新;8和9在弹出界⾯输⼊列名和数据类型;在⾏⾸右击;弹出如下;包括:设置主键;插⼊列;删除列;关系;索引/键;全⽂索引;XML索引;CHECK约束;空间索引;⽣成更改脚本;选择第⼀项,设置第⼀列为主键;完成后如下图;关于上图字段类型的说明:char:固定长度,存储ANSI字符,不⾜的补英⽂半⾓空格。
nchar:固定长度,存储Unicode字符,不⾜的补英⽂半⾓空格varchar:可变长度,存储ANSI字符,根据数据长度⾃动变化。
sql server 模糊查询正则表达式在数据库管理系统中,模糊查询是一种强大的搜索方法,可以帮助用户在海量数据中快速找到所需信息。
在SQL Server中,我们可以利用正则表达式实现模糊查询。
以下将详细介绍如何使用正则表达式进行模糊查询。
1.介绍模糊查询的概念模糊查询,又称为全文搜索或全字段搜索,是一种根据部分关键字来查找相似内容的数据库查询方法。
模糊查询可以应用于姓名、地址、电话等数据的搜索。
通过使用模糊查询,我们可以更快速地找到所需信息,提高数据检索效率。
2.介绍SQL Server中的模糊查询方法在SQL Server中,有多种方法可以实现模糊查询。
其中一种常见的方法是使用LIKE关键字。
LIKE关键字允许我们在查询条件中使用通配符来匹配字符串。
通配符包括:- 百分号(%):表示任意数量的字符(包括零个字符)- 下划线(_):表示一个字符例如,假设我们有一个员工表,其中包含姓名和电话号码两个字段。
我们可以使用如下查询来查找名字以“张”开头的员工:```sqlSELECT * FROM 员工表WHERE 姓名LIKE "张%"```3.详述使用正则表达式进行模糊查询的步骤虽然LIKE关键字可以实现简单的模糊查询,但在某些情况下,我们需要更复杂的匹配规则。
这时,可以使用正则表达式进行模糊查询。
以下是使用正则表达式进行模糊查询的步骤:- 选择合适的正则表达式:根据需求选择能满足匹配条件的正则表达式。
- 在查询条件中使用REGEXP关键字:在SQL Server中,使用REGEXP 关键字来表示接下来的条件是正则表达式。
- 编写正则表达式:根据需求编写正则表达式,以实现更精确的匹配。
例如,假设我们需要查找以“张”开头,且电话号码末尾为“123”的员工:```sqlSELECT * FROM 员工表WHERE 姓名REGEXP "^张[^123]*$"```4.举例说明如何使用正则表达式进行模糊查询以下是一个具体的例子,展示如何使用正则表达式进行模糊查询。
SQLServer查询、搜索命令、语句SQL Server⾃带的系统存储过程sp_who和sp_lock也可以⽤来查找阻塞和死锁⼀. 阻塞查询 sp_lock执⾏ exec sp_lock 下⾯列下关键字段spid 是指进程ID,这个过滤掉了系统进程,只展⽰了⽤户进程spid>50。
dbid 指当前实例下的哪个数据库 , 使⽤DB_NAME() 函数来标识数据库type 请求锁住的模式mode 锁的请求状态GRANT:已获取锁。
CNVRT:锁正在从另⼀种模式进⾏转换,但是转换被另⼀个持有锁(模式相冲突)的进程阻塞。
WAIT:锁被另⼀个持有锁(模式相冲突)的进程阻塞。
总结:当mode 不为GRANT状态时,需要了解当前锁的模式,以及通过进程ID查找当前sql 语句例如当前进程ID是416,且mode状态为WAIT 时,查看⽅式 DBCC INPUTBUFFER(416)⽤sp_lock查询显⽰的信息量很少,也很难看出谁被谁阻塞。
所以当数据库版本为2005及以上时不建议使⽤。
⼆.阻塞查询 dm_tran_locksSELECTt1.resource_type,t1.resource_database_id,t1.resource_associated_entity_id,t1.request_mode,t1.request_session_id,t2.blocking_session_idFROM sys.dm_tran_locks as t1INNER JOIN sys.dm_os_waiting_tasks as t2ON t1.lock_owner_address = t2.resource_address;上⾯查询只显⽰有阻塞的会话,关注blocking_session_id 也就是被阻塞的会话ID,同样使⽤DBCC INPUTBUFFER来查询sql语句三.阻塞查询 sys.sysprocessesSELECTspid,kpid,blocked,waittime AS'waitms',lastwaittype,DB_NAME(dbid)AS DB,waitresource,open_tran,hostname,[program_name],hostprocess,loginame,[status]FROM sys.sysprocesses WITH(NOLOCK)WHERE kpid>0AND[status]<>'sleeping'AND spid>50sys.sysprocesses 能显⽰会话进程有多少,等待时间, open_tran有多少事务,阻塞会话是多少. 整体内容更为详细。
SQLserver2008全文检索使用方法
1.开启SQL Full-text服务
图1 开启SQLServer Full-text服务
保证SQL Full-text Filter Daemon Launcher服务处于开启状态,不同版本SQLServer全文检索服务名称可能稍有不同,如果服务列表中没有这个服务,请使用SQLServer安装光盘安装“全文检索”组件。
2.启用全文检索
执行SQL语句启用全文检索:
Execute sp_fulltext_database 'enable'
3.设置全文语言为中文
图2 设置全文语言
在服务器->属性->高级中,设置默认全文语言为2052(中文)。
4.建立数据表
在需要全文检索的数据表中,必须有一列字符型的字段存放文件类型,例如建表语句中的FileType。
必须有一列Varbinary(Max)类型的字段存放文件内容,例如建表语句中的FileContent。
建表SQL语句示例:
CREATE TABLE SampleBlobTable
(
[PKID]int identity(1,1)primary key,
[FileName]Nvarchar(255)null,
[FileType]Nvarchar(32)null,
[FileContent]VARBINARY(MAX)NULL,
[AddTime]datetime default(getdate())
)
5.建立全文索引
步骤1 建立全文索引
在需要全文检索的数据表上点击右键->全文索引->定义全文索引。
步骤2 选择唯一索引
步骤3 选择表列
选择表列,本例中以FileType列标明文件格式,将文件存入数据库时须正确填写此字段,此字段中的数据内容包括“doc”、“txt”、“xls”等。
后续步骤无需更改默认值,点击下一步继续直至完成。
6.支持PDF文件
1.安装Ad obe iFilter
Adobe iFilter6.0:
/support/downloads/thankyou.jsp?ftpID=2611&fileID=2457
Adobe iFilter9.0 for 64bit:
/support/downloads/thankyou.jsp?ftpID=4025&fileID=3941
2.执行SQL语句
exec sp_fulltext_service 'load_os_resources', 1;
exec sp_fulltext_service 'verify_signature', 0;
3.重新启动SQLSERVER
4.检查支持文件
执行下列语句:
select document_type,path from sys.fulltext_document_types where document_type='.pdf',如查询结果为下图则表示成功,可以进行PDF的全文检索了。
l
图3 执行结果
7.查询语法及示例
5.语法
CONTAINS
( {column | * }, '< 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 ] }
< simple_term > ::=
word | " phrase "
< prefix term> ::=
{"word * " | "phrase *" }
< generation_term > ::=
FORMSOF ( INFLECTIONAL , < simple_term > [ ,...n ] )
< proximity_term > ::=
{ < simple_term > | < prefix_term > }
{ { NEAR | ~ } { < simple_term > | < prefix_term > } } [ ...n ] < weighted_term > ::=
ISABOUT
( {{
<simple_term>
| < prefix_term >
| < generation_term >
| < proximity_term >
}
[ WEIGHT ( weight_value ) ]
} [ ,...n ]
)
6.示例
1.查找文件内容含“合同”的数据。
select*from SampleBlobTable where contains(filecontent,'合同') 注意:如果查询条件中包含空格,查询条件需用双引号括起来,如'”合同”',否则视为语法错误。
2.查找文件内容含“归档”或“标题”的数据。
select*from SampleBlobTable where contains(filecontent,'归档 OR 标题')
注意:多个词之间用逻辑操作符连接 (包括 AND ,AND NOT,OR )。
如果词中包含空格,那么这个词要用双引号括起来。
3.查找文件内容含“北京?站”的数据。
select*from SampleBlobTable where contains(filecontent,'北京Near 站')
注意:上述SQL语句将返回包含“北京站”、“北京西站”、“北京东站”等“北京”与“站”无间隔或间隔一个汉字(如果是英文则为一个单词)的数据,不会包含“北京东南站”的数据。
4.查找所有开头字母为”hu”的数据。
select*from SampleBlobTable where contains(filecontent,'hu*')注意:上述SQL语句将返回包含”human”、”hungry”等单词的数据,此语法只针对英文有效,针对中文“*”符号无论有无,效果均相同。
5.加权查询
select*from SampleBlobTable where contains(filecontent,'ISABOUT (city weight (.8), county weight (.4))')
注意:上述SQL语将将针对city和county两个词进行不同权重的查询,权重不同将影响返回数据集的显示顺序(如果限定返回数量,则间接影响是否返回数据)。
6.多态查询
select*from SampleBlobTable where contains(filecontent,'FORMSOF (INFLECTIONAL,dry)')
注意:查询将返回包含”dry”,”dried”,”drying”等数据,针对英语有效。
附:文档修改历史。