全文检索,SQLserver2008全文检索使用方法
分类:微服架构

小说介绍mssqlserver fulltext全文字笔迹查证索剖判的显即使,全文索引独有在sql二零零二自此本领运用,有亟待的爱侣可要注意哦。

转自:

sql server 全文检索有二种检索方式,生龙活虎种是contains,另后生可畏种是freetext。前者是含有,近似于 like '%重中之重词%',前面一个则是将风华正茂段文字分词未来对种种词进行找出。 具身体语言法: contains: SELECT 字段1,字段2 FROM 表名 WHERE contains(字段,'"词后生可畏" or "词二"'卡塔尔国 依据查找结果的相似度排序 SELECT 字段1,字段2 FROM 表名 inner join containstable(表名, 字段,'"词大器晚成" or "词二"',10State of Qatar as k on 表名.id = k.[key] order by k.RANK DESC freetext: SELECT 字段1,字段2 FROM 表名 WHERE freetext(字段,'词生龙活虎词二'State of Qatar 依据查找结果的相通度排序 SELECT 字段1,字段2 FROM 表名 inner join freetexttable(表名, 字段,'词大器晚成词二',10卡塔尔国as k on 表名.id = k.[key] order by k.RANK DESC 上文中freetexttable或containstable的10表示取10条数据

SQLserver二零一零全文字笔迹查验索使用办法

like '%至关心体贴要词%',前者则是将大器晚成段文字分词未来对每种词进行找寻。

近来搜索了一下全文字笔迹核算索,发掘了部分标题,现在计算如下:

新近查究了一下全文字笔迹核查索,开掘了有些主题材料,今后总结如下:全文索引和查询概念(摘自SQL联机扶持卡塔尔全文索引、查询和同步化最根本的兼备须求是,在登记实行全文字笔迹核查索的具备表上皆有二个唯生机勃勃的全文键列。全文索引对使用的根本字及其所在地点进行追踪。比方,假定有二个对DevTools表的全文索引。全文索引可能提出在Abstract列的第4二十五个和第9捌十三个单词处找到了单词Microsoft,所在的行与ProductID6关系。该索引布局帮衬对具有包涵被索引单词的项实行中用检索,以致高端找寻操作,如短语检索和周边检索。为防止全文索引因包蕴众多对搜索未有助于的词而变得丰腴,a、and、is或the这类额外的词都忽视不计。例如,内定"theproductsorderedduringthesesummermonths"与内定"productsorderedduringsummermonths"是同等的。有那四个字符串的行都会被再次回到。目录MssqlFtdataSqlserverConfig下提供了二种语言的苦闷词列表。在设置带有全文字笔迹查验索扶助的MicrosoftSQLServer时会创立那些目录,并还要设置烦恼词文件。干扰词文件能够编写。举个例子,高才干企业的系统管理员能够把单词computer增加到他俩的和弄词表中去。下表展现了烦恼词文件及其相应的语言。郁闷词文件语言-----------------------Noise.chs简体中文Noise.cht繁体汉语Noise.dat语言中性Noise.deu波兰语Noise.engРепублика Србија语Noise.enu德语Noise.esn斯洛伐克语Noise.fra希腊语Noise.ita意国语Noise.jpn拉脱维亚语Noise.kor韩文Noise.nld俄文Noise.sve斯拉维尼亚语在拍卖全文查询时,检索引擎将知足检条件的行的键值重返给MicrosoftSQLServer。比如有二个SciFi表,此中Book_No列是主键列。Book_NoWriterTitle---------------------------------------------A025AsimovFoundation's艾德geA027AsimovFoundationandEmpireC011克拉克eChildhood'sEndV109VerneMysteriousIsland假定想选拔一个全文字笔迹核查索查询来查找包括单词Foundation的书名。在本例中,将从全文索引得到值A025和A027。然后SQLServer用那一个键值和另外栏的音讯响应该查询。下表显示了蕴藏全文索引数据所利用的言语。那么些语言基于SQLServer安装时期接纳的Unicode排序准绳区域安装标记符。Unicode排序准绳区域设置标识符全文数据存款和储蓄所用的语言------------------------------------------------------汉语注音符号繁体中文普通话拼音简体粤语普通话笔画简体粤语普通话笔画繁体汉语俄文意大利语România语保加圣佩德罗苏拉语克罗地亚共和国语希腊语通用Unicode斯拉维尼亚语罗马尼亚语República Portuguesa语德文信函电话电报子通讯电话簿Hungary语意大利共和国语意国语韩文乌克兰语英语Unicode俄语加泰罗尼亚语阿拉伯语朝鲜语Unicode葡萄牙语意大利语英语Sverige/意大利语希伯来语此列表中尚无的别样具备Unicode排序准则区域安装标记符值都映射到利用空格分隔单词的中性语言单词的断字符和词干分隔符。表达Unicode排序法规区域安装标志符设置用于全体可进展全文索引的数据类型。假诺为char、varchar或text类型列的排序次序设置的语言类型,不是Unicode排序准则区域设置标记符语言,那么在对char、varchar和text类型的列实行全文索引和查询时,照旧选择Unicode排序法则区域设置标志符值。创制全文索引(以索引image列为例,别的品种字段差不离相像State of Qatar标题全文索引image列,全战术!小编pengdali[原作]根本字全文索引image前些天“世所稀少”的停电了,看了一天书。上午搞了须臾间全文索引,决定把阅世贴出来,笔者尽只怕写的事必躬亲,大家合作学习,应接指正!1、运维MicrosoftSearch服务开始菜单--SQL程序组--服务微处理机--下拉筐--MicrosoftSearch服务--运转它2、..MicrosoftSQLServerMSSQLFTDATASQLServerConfig目录里建三个非空noise.chs文件非空noise.chs文件,也可能有一些人讲是空的noise.chs文件,但自个儿老是都往里写多少个不算的字母。3、建构意况打开查询深入分析器--执行下列脚本:--------------------------------------------createdatabasetest---创设test数据库usetest---选取test数据库createtabledali(IDintnotnullprimarykey,MyImageimage,FileTypevarchar(255卡塔尔国,FileNmaevarchar(255卡塔尔国卡塔尔国---创立dali表--dali表中Id,MyImage,FileType三列是必需的,因为要对image列索引的话,必定要有贰个主键列,三个image列,二个存放文件类型的列--大家领略在windows系统中文件类型是靠扩展名来区分的之所以FileType列也正是用来放文件的扩展名--------------------------------------------sp_fulltext_database'enable'--为全文索引启用数据库sp_fulltext_catalog'My_FullDir','create'---成立三个叫My_FullDif的全文目录declare@Keysysname;select@Key=c.namefromsyscolumnsa,sysconstraintsb,sysobjectscwherea.id=object_id('dali')anda.name='ID'anda.id=b.idandb.constid=c.idandc.namelike'PK%'execsp_fulltext_table'dali','create','My_FullDir',@Key----这两句是为全文索引,对表张开标识sp_fulltext_column'dali','MyImage','add',0x0804,'FileType'---这句是钦赐MyImage列为全文索引列,FileType是种类列------------------------------------------------4、在c盘下放五个恢弘名叫doc的word文件,一个恢宏名字为xls的excel文件,二个恢宏名称为htm的网页文件,个扩展名称叫bmp的图片共4个,我们可依赖实际意况放入!5、插入数据创立下边那一个蕴藏进程--------------------------------------------------CREATEPROCEDUREsp_textcopy@srvnamevarchar(30),@loginvarchar(30),@passwordvarchar(30),@dbnamevarchar(30),@tbnamevarchar(30),@colnamevarchar(30),@filenamevarchar(30),@whereclausevarchar(40),@directionchar(1)AS/*这是使用textcopy工具将文件插入到数据库中,假使有前台工具得以用前台开辟工具将文件插入,这里为了演示*/DECLARE@exec_strvarchar(255)SELECT@exec_str='textcopy/S'+@srvname+'/U'+@login+'/P'+@password+'/D'+@dbname+'/T'+@tbname+'/C'+@colname+'/W"'+@whereclause+'"/F"'+@filename+'"/'+@directionEXECmaster..xp_cmdshell@exec_str----------------------------------------------------insertdalivalues(1,0x,'doc','大力的doc'卡塔尔---当中第二列是0x它是四个16进制数对应image列,是必需的,不要写null,第三列是文件类型,既强大名sp_textcopy'你的服务器名','sa','你的密码','test','dali','MyImage','c:力图的doc.doc','whereID=1','I'-------依次参数是:实例名,顾客名,密码,数据库名,表名,image列名,路线及文件名,条件(你必得保障它只选择后生可畏行卡塔尔(قطر‎,I---------------------------------------------------------------------------------------------------------------------insertdalivalues(2,0x,'bmp','图片'State of Qatarsp_textcopy'你的服务器名','sa','你的密码','test','dali','MyImage','c:图片.bmp','whereID=2','I'--注意尺度是ID=2insertdalivalues(3,0x,'xls','Excel文件'卡塔尔(قطر‎sp_textcopy'你的服务器名','sa','你的密码','test','dali','MyImage','c:Excel文件.xls','whereID=3','I'--注意尺度是ID=3insertdalivalues(4,0x,'htm','网页'卡塔尔(قطر‎sp_textcopy'你的服务器名','sa','你的密码','test','dali','MyImage','c:网页.htm','whereID=4','I'--注意尺度是ID=4----------上面的语句,要保管项目同样,路线准确,条件唯风流浪漫正确应该就足以了6、填充全文索引sp_fulltext_table'dali','start_full'---第一个参数是表名,第三个参数是开发银行表的全文索引的一心填充7、能够开首你的试验了select*fromdaliwherecontains(MyImage,'J老师')select*fromdaliwherecontains(MyImage,'海先生'卡塔尔------END------------调节和测验意况:SQLServer2004公司版、Windows二〇〇二高端服务器全文索引中的多少个难点:1.招来时现身谬误:服务器:音信7619,品级16,状态1,行2查询子句只含有被忽视的词这种场合改善MssqlFtdataSqlserverConfig下对应语言的侵扰词列表文件2.改动了苦闷词文件,查询汉语时照旧出现上述难题a.首先检查你的SQL有未有安装新型的补丁,检查的秘籍是在查询深入分析器中运维:select@@version假设出来的版本号是8.00.760之下,则证明你未安装sp3的补丁,要装上.SQL补丁下载: 注意下载后,实行的时候是解压,要在解压后的目录中推行setup.bat才是实在的装置b.配置全文索引时,单词断字符接收"中文(中夏族民共和国卡塔尔"c.Noise.chs文件中足足有二个单词,比如:?d.假设在全文字笔迹查证索时,你能健康改良压抑词文件,表明你的全文字笔迹核查索未有动用上这一个文件假使您铺排的全文字笔迹查证索应该要用到这些文件,那就在商家微型机--展开你的数据库--右键全文目录--重城建总公司体全文目录3.表中的数据变动后,检索不到方式1.右键您的表--全文索引表--启用增量填充方法2.右键你的表--全文索引表--修正追踪,那样之后的更正会自动填写(有一定延迟卡塔尔(قطر‎4.sql二〇〇二才支撑对image列的全文字笔迹核算索

1.       开启SQL Full-text服务

图片 1

                       

图1 开启 SQLServer Full-text服务

         保障 SQL Full-text Filter Daemon Launcher服务处于展开状态,分歧版本SQLServer全文字笔迹核算索服务名称恐怕稍有例外,借使服务列表中尚无这几个服务,请使用SQLServer安装光盘安装“全文字笔迹核准索”组件。

实际语法: contains:

全文索引和查询概念(摘自SQL 联机支持卡塔尔(قطر‎

2.       启用全文字笔迹考验索

实施SQL语句启用全文检索:

Execute sp_fulltext_database 'enable'

 

代码如下复制代码

全文索引、查询和同步化最重大的布署需要是,在登记举行全文字笔迹核查索的具有表上都有四个唯豆蔻年华的全文键列(可能单列主键)。全文索引对应用的注重字及其所在地方进行追踪。

3.       设置全文语言为华语

 图片 2

图2 设置全文语言

在服务器->属性->高端中,设置暗许全文语言为2052(普通话)。

SELECT 字段1,字段2 FROM 表名 WHERE contains(字段,'词一 or 词二')

比如说,假定有三个对 DevTools 表的全文索引。全文索引恐怕提议在 Abstract 列的第 423 个和第 982 个单词处找到了单词 Microsoft,所在的行与 ProductID 6 关联。该索引结构支持对具有包含被索引单词的项进行中用检索,甚至高端搜索操作,如短语检索和直面检索。

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())

)

基于查找结果的相符度排序

为严防全文索引因富含众多对搜索未有助于的词而变得痴肥,a、and、is 或 the 这类额外的词都忽视不计。举个例子,钦定"the products ordered during these summer months"与钦点"products ordered during summer months"是如出生机勃勃辙的。有那八个字符串的行都会被再次来到。

5.       创设全文索引

 图片 3

步骤1 成立全文索引

         在急需全文字笔迹查验索的数据表上点击右键->全文索引->定义全文索引。

图片 4

        

步骤2 选项独一索引

 图片 5

步骤3 选择表列

慎选表列,本例中以FileType列标注文件格式,将文件存入数据库时须正确填写此字段,此字段中的数据内容包含“doc”、“txt”、“xls”等。

三翻五次手续无需修改默许值,点击下一步继续直至完结。

代码如下复制代码 SELECT 字段1,字段2 FROM 表名 inner join containstable(表名, 字段,'词风流倜傥 or 词二',10卡塔尔国 as k on 表名.id = k.[key] order by k.RANK DESC

目录 MssqlFtdataSqlserverConfig 下提供了三种语言的烦恼词列表。在设置带有全文字笔迹核准索帮衬的 Microsoft® SQL Server™ 时会创立那几个目录,并还要设置忧虑词文件。烦扰词文件能够编写制定。比方,高能力公司的系统管理员能够把单词 computer 增多到他俩的和弄词表中去。(要是编辑困扰词文件,则必需在改变生效在此以前再一次填写全文目录。)下表呈现了苦恼词文件及其相应的语言。

6.       支持PDF文件

freetext:

压抑词文件      语言

1.      安装 Adobe iFilter

Adobe iFilter6.0:

Adobe iFilter9.0 for 64bit:

代码如下复制代码


2.      执行SQL语句

exec sp_fulltext_service 'load_os_resources', 1;

exec sp_fulltext_service 'verify_signature', 0;

SELECT 字段1,字段2 FROM 表名 WHERE freetext(字段,'词生龙活虎词二'State of Qatar

Noise.chs      简体普通话
Noise.cht      繁体中文
Noise.dat      语言中性
Noise.deu      德语
Noise.eng      英语(英国)
Noise.enu      英语(美国)
Noise.esn      丹麦语
Noise.fra      法语
Noise.ita      意大利共和国语
Noise.jpn      日语
Noise.kor      韩文
Noise.nld      荷兰语
Noise.sve      瑞典语

3.      重新启航 SQLSE凯雷德VE智跑

听大人说查找结果的相符度排序

在拍卖全文查询时,检索引擎将知足检条件的行的键值重回给 Microsoft SQL Server。比方有三个 SciFi 表,个中 Book_No 列是主键列。

4.      检查援救文件

实施下列语句:

select document_type, path from sys.fulltext_document_types where document_type = '.pdf',如查询结果为下图则表示成功,能够展开PDF的全文检索了。

l图片 6

图3 实行结果

代码如下复制代码 SELECT 字段1,字段2 FROM 表名 inner join freetexttable(表名, 字段,'词意气风发词二',10卡塔尔国 as k on 表名.id = k.[key] order by k.RANK DESC

Book_No   Writer     Title

7.       查询语法及示范

上文中freetexttable或containstable的10表示取10条数据


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*] `
)

方今研究了一下全文字笔迹查验索,开采了大器晚成部分主题素材,以后总括如下:

A025     Asimov      Foundation's Edge
A027     Asimov      Foundation and Empire
C011     Clarke      Childhood's End
V109     Verne       Mysterious Island

6.      示例

  1. 查找文件内容含“协议”的数目。

select * from SampleBlobTable where contains(filecontent,'合同')

在乎:尽管查询条件中蕴藏空格,查询条件需用双引号括起来,如'”左券”',不然视为语法错误。

  1. 查找文件内容含“归档”或“标题”的数额。

select * from SampleBlobTable where contains(filecontent,'归档 OR 标题')

小心:四个词之间用逻辑操作符连接 (包蕴 AND ,AND NOT,O君越State of Qatar。假设词中隐含空格,那么这一个词要用双引号括起来。

  1. 查找文件内容含“东京(Tokyo卡塔尔(قطر‎?站”的数据。

select * from SampleBlobTable where contains(filecontent,'北京Near 站')

静心:上述SQL语句将赶回包蕴“法国巴黎站”、“新加坡西站”、“香岛东站”等“新加坡”与“站”无间隔或间隔三个汉字(要是是罗马尼亚语则为二个单词)的数据,不会饱含“新加坡西南站”的数量。

  1. 探索全体最早字母为”hu”的多少。

  select * from SampleBlobTable where contains(filecontent,'hu*')

介怀:上述SQL语句将赶回富含”human”、”hungry”等单词的数码,此语法只针相持陶宛共和国语有效,针对中文“*”符号无论有无,效果均后生可畏致。

 

  1. 加权查询

 select * from SampleBlobTable where contains(filecontent,'ISABOUT (city weight (.8), county weight (.4))')

细心:上述SQL语将将针对city和county多个词进行差异权重的查询,权重不一样将影响重临数据集的体现顺序(借使界定再次回到数量,则直接影响是不是再次回到数据)。

  1. 多态查询

select * from SampleBlobTable where contains(filecontent,'FORMSOF (INFLECTIONAL,dry)')

瞩目:查询将回来包罗”dry”,”dried”,”drying”等数码,针对波兰语有效。

作者:王春天 地址:

 

全文索引和询问概念(摘自SQL 联机扶持卡塔尔国

万黄金年代想利用叁个全文字笔迹考验索查询来探求满含单词 Foundation 的书名。在本例中,将从全文索引获得值 A025 和 A027。然后 SQL Server 用那些键值和此外栏的音讯响应该查询。

全文索引、查询和同步化最根本的希图需要是,在登记举行全文检索的全体表上皆有一个唯黄金年代的全文键列。全文索引对接受的第一字及其所在地方举行追踪。

下表突显了蕴藏全文索引数据所运用的言语。那些语言基于 SQL Server 安装时期采用的 Unicode 排序法则区域安装标记符。

诸如,假定有三个对 DevTools 表的全文索引。全文索引也许指出在 Abstract 列的第 423 个和第 982 个单词处找到了单词 Microsoft,所在的行与 ProductID 6 关联。该索引构造扶助对具备包蕴被索引单词的项实行实用检索,甚至高等找出操作,如短语检索和接近检索。

Unicode 排序准则区域设置标记符    全文数据存款和储蓄所用的语言

为防守全文索引因含有众多对寻觅未有助于的词而变得肥胖,a、and、is 或 the 那类额外的词都忽视不计。举个例子,钦赐the products ordered during these summer months与钦点products ordered during summer months是千篇生龙活虎律的。有那七个字符串的行都会被再次来到。


目录 MssqlFtdataSqlserverConfig 下提供了三种语言的搅动词列表。在设置带有全文字笔迹查验索扶助的 Microsoft SQL Server 时会创制那些目录,并同期安装困扰词文件。郁闷词文件能够编写制定。比如,高能力集团的系统助理馆员能够把单词 computer 增多到他俩的骚扰词表中去。下表呈现了忧虑词文件及其对应的语言。

汉语注音符号(四川)              繁体粤语 
普通话拼音                         简体中文 
中文笔画                         简体普通话 
汉语笔画(辽宁)                 繁体中文 
荷兰语                           荷兰语 
英语(英国)                     英语(英国) 
法语                            法语 
通用 Unicode                    英语(美国) 
德语                            德语 
德文信函电话电报子通信电话簿                       韩文 
意国语                         意国语 
日语                            日语 
日语 Unicode                    日语 
韩文                            韩文 
韩文 Unicode                    韩文 
英语(今世)                 希伯来语 
瑞典/芬兰语                      瑞典语 

烦懑词文件 语言 -------------- ---------Noise.chs 简体中文 Noise.cht 繁体粤语 Noise.dat 语言中性 Noise.deu 斯洛伐克共和国语 Noise.eng 加泰罗尼亚语 Noise.enu 乌Crane语Noise.esn 希腊语 Noise.fra 英文 Noise.ita 意大利共和国语 Noise.jpn 塞尔维亚语Noise.kor 德语 Noise.nld 英语 Noise.sve 法文

此列表中从不的其余具备 Unicode 排序准绳区域设置标志符值都映射到利用空格分隔单词的中性语言单词的断字符和词干分隔符。

在管理全文查询时,检索引擎将满意检条件的行的键值重临给 Microsoft SQL Server。比方有三个 SciFi 表,在那之中 Book_No 列是主键列。

证实  Unicode 排序法规区域安装标志符设置用于全部可开展全文索引的数据类型(如 char、nchar 等)。如若为 char、varchar 或 text 类型列的排序次序设置的言语类型,不是 Unicode 排序法则区域设置标志符语言,那么在对 char、varchar 和 text 类型的列进行全文索引和询问时,还是使用 Unicode 排序准则区域安装标志符值。

代码如下复制代码

创设全文索引(以索引image列为例,其余种类字段大概相近卡塔尔(قطر‎

Book_No Writer Title -------- ----------- --------------------------A025 Asimov Foundation's Edge A027 Asimov Foundation and Empire C011 Clarke Childhood's End V109 Verne Mysterious Island

标题     全文索引image列,全计谋!
作者     pengdali [原作] 
至关重要字   全文索引 image

若果想采纳一个全文检索查询来搜索富含单词 Foundation 的书名。在本例中,将从全文索引获得值 A025 和 A027。然后 SQL Server 用那几个键值和此外栏的音信响应该查询。

 
 前日“千载难遇”的停电了,看了一天书。早晨搞了一下全文索引,决定把资历贴出来,笔者竭尽写的详细,大家一起学习,招待指正!

下表展现了累积全文索引数据所使用的语言。这么些语言基于 SQL Server 安装时期采用的 Unicode 排序法则区域安装标记符。

1、启动 Microsoft Search 服务
   开端菜单-->SQL程序组-->服务微机-->下拉筐-->Microsoft Search 服务-->运营它

Unicode 排序准则区域设置标记符 全文数据存款和储蓄所用的语言 ------------------------------- -----------------------汉语注音符号 繁体中文 粤语拼音 简体中文 中文笔画 简体汉语 汉语笔画 繁体中文 加泰罗尼亚语菲律宾语 Republika Hrvatska语 德语 乌Crane语 希伯来语 通用 Unicode 意大利语 匈牙利(Magyarország)语 波兰语 德文信函电话电报子通信电话簿 葡萄牙语意大利共和国语 意大利共和国语 德文 印度语印尼语 保加利亚共和国语 Unicode 葡萄牙语 塞尔维亚语 法语 希腊语 Unicode 加泰罗尼亚语 希腊语 德语 Sverige/罗马尼亚语 斯拉维尼亚语

2、
  ..Microsoft SQL ServerMSSQLFTDATASQLServerConfig目录里建叁个非空noise.chs文件
  非空noise.chs文件,也是有一些人会讲是空的noise.chs文件,但本身老是都往里写多少个空头的字母。

此列表中绝非的其它具备 Unicode 排序准则区域安装标识符值都映射到利用空格分隔单词的中性语言单词的断字符和词干分隔符。

3、创建意况

证实 Unicode 排序准则区域安装标记符设置用于全数可开展全文索引的数据类型。借使为 char、varchar 或 text 类型列的排序次序设置的语言类型,不是 Unicode 排序法则区域安装标志符语言,那么在对 char、varchar 和 text 类型的列举行全文索引和查询时,仍旧使用 Unicode 排序准绳区域设置标志符值。

   张开查询深入分析器-->试行下列脚本:

create database test ---创建test数据库
use test             ---选择test数据库
create table  dali (ID int not null primary key,MyImage image,FileType varchar(255),FileNmae varchar(255)) ---创建dali表
--dali表中 Id,MyImage,FileType 三列是必得的,因为要对image列索引的话,应当要有二个主键列,叁个image列,一个贮存文件类型的列
--我们领会在windows系统中文件类型是靠扩展名来区分的之所以FileType列也正是用来放

创办全文索引(以索引image列为例,别的门类字段大约相通卡塔尔

文本的扩充名

sp_fulltext_database 'enable' --为全文索引启用数据库
sp_fulltext_catalog 'My_FullDir', 'create'  ---创造一个叫My_FullDif的全文目录

declare @Key sysname ; select @Key=c.name from syscolumns a,sysconstraints b,sysobjects c where a.id=object_id('dali') and a.name='ID' and a.id=b.id and b.constid=c.id and c.name like 'PK%'
exec sp_fulltext_table 'dali','create','My_FullDir',@Key  ----这两句是为全文索引,对表展开标识

sp_fulltext_column 'dali','MyImage','add',0x0804,'FileType' 

标题 全文索引image列,全战略!作者 pengdali [原作] 关键字 全文索引 image

---那句是钦点MyImage列为全文索引列,FileType是项目列

4、在c盘下放一个扩展名叫doc的word文件,叁个恢弘名叫xls的excel文件,多个恢弘名称为htm的网页文件,个扩充名叫bmp的图纸
   共4个,大家可依据实际情形放入!

5、插入数据

几日前稀缺的停电了,看了一天书。上午搞了弹指间全文索引,决定把经验贴出来,小编尽恐怕写的详实,大家一齐学习,款待指正!

  创设上面这一个蕴藏进度

CREATE PROCEDURE sp_textcopy
  @srvname    varchar (30),
  @login      varchar (30),
  @password    varchar (30),
  @dbname      varchar (30),
  @tbname      varchar (30),
  @colname    varchar (30),
  @filename    varchar (30),
  @whereclause varchar (40),
  @direction  char(1)
AS
/* 那是使用textcopy工具将文件插入到数据库中,如若有前台工具得以用前台开荒工具将文件插入,这里为了演示 */
DECLARE @exec_str varchar (255)
SELECT @exec_str='textcopy /S '+@srvname+' /U '+@login+' /P '+@password+' /D '+@dbname+' /T'+@tbname+' /C '+@colname+' /W"'+@whereclause+'" /F"'+@filename+'" /'+@direction

1、运营 Microsoft Search 服务发轫菜单--SQL程序组--服务微处理机--下拉筐--Microsoft Search 服务--运转它

EXEC master..xp_cmdshell @exec_str

insert dali values(1,0x,'doc','大力的doc'State of Qatar ---此中其次列是 0x 它是二个16进制数对应image列,是务必的,不要写null,第三列是文件类型,既扩充名

sp_textcopy '你的服务器名','sa','你的密码','test','dali','MyImage','c:大力的doc.doc','where ID=1','I'

2、..Microsoft SQL ServerMSSQLFTDATASQLServerConfig目录里建三个非空noise.chs文件非空noise.chs文件,也许有一些人会讲是空的noise.chs文件,但本身老是都往里写多少个不算的假名。

-------顺序参数是:实例名,顾客名,密码,数据库名,表名,image列名,路线及文件名,条件(你必得保障它只选择风度翩翩行卡塔尔国,I

insert dali values(2,0x,'bmp','图片')
sp_textcopy '你的服务器名','sa','你的密码','test','dali','MyImage','c:图片.bmp','where ID=2','I' --注意尺度是 ID=2

insert dali values(3,0x,'xls','Excel文件')
sp_textcopy '你的服务器名','sa','你的密码','test','dali','MyImage','c:Excel文件.xls','where ID=3','I' --注意尺度是 ID=3

insert dali values(4,0x,'htm','网页')
sp_textcopy '你的服务器名','sa','你的密码','test','dali','MyImage','c:网页.htm','where ID=4','I' --注意尺度是 ID=4

----------下面的言语,要确定保证项目同样,路径准确,条件唯大器晚成正确应该就足以了

6、填充全文索引

sp_fulltext_table 'dali','start_full' ---第三个参数是表名,第2个参数是运营表的全文索引的通通填充

7、能够起来你的试验了

select * from dali where contains(MyImage,'J老师')

select * from dali where contains(MyImage,'海老师')

------END----------
--调试遭逢:SQLServer二〇〇二集团版、Windows2001尖端服务器

全文索引中的多少个难点:

1.寻找时出现错误:
  服务器: 消息 7619,级别 16,状态 1,行 2
  查询子句只包蕴被忽视的词

  这种境况校正 MssqlFtdataSqlserverConfig 下对应语言的烦懑词列表文件

2.纠正了苦恼词文件,查询普通话时照旧现身上述难题
  a.首先检查你的SQL有未有安装新型的补丁,检查的法子是在查询深入分析器中运维:
    select @@version
    如若出去的版本号是8.00.760以下,则评释你未设置sp3的补丁,要装上.

    SQL补丁下载:
   

    注意下载后,试行的时候是解压,要在解压后的目录中试行setup.bat才是真正的装置
 
  b.配置全文索引时,单词断字符接受"普通话(中华夏族民共和国卡塔尔国"

  c.Noise.chs文件中最稀有一个单词,比方:?

  d.借使在全文字笔迹核实索时,你能正常修正苦闷词文件,表达您的全文字笔迹核查索未有选拔上这几个文件
    假若您布署的全文字笔迹核查索应该要用到那一个文件,那就在
    企管器--张开你的数据库--右键全文目录--重城建总公司体全文目录

3.表中的数据变动后,检索不到
  方法1. 右键你的表--全文索引表--启用增量填充
  方法2. 右键你的表--全文索引表--校正追踪,那样之后的修改会自动填写(有必然延迟卡塔尔(قطر‎

4.sql贰零零肆才支撑对image列的全文字笔迹核准索

3、创建意况张开查询剖析器--试行下列脚本:--------------------------------------------

代码如下复制代码

create database test ---成立test数据库use test ---选取test数据库create table dali (ID int not null primary key,MyImage image,FileType varchar(255卡塔尔国,FileNmae varchar(255卡塔尔国State of Qatar ---成立dali表--dali表中 Id,MyImage,FileType 三列是必得的,因为要对image列索引的话,必定要有一个主键列,一个image列,二个存放文件类型的列--我们领略在windows系统粤语件类型是靠扩张名来区分的所以FileType列也正是用来放 文件的恢弘名--------------------------------------------

sp_fulltext_database 'enable' --为全文索引启用数据库sp_fulltext_catalog 'My_FullDir', 'create' ---创造二个叫My_FullDif的全文目录

declare @Key sysname ; select @Key=c.name from syscolumns a,sysconstraints b,sysobjects c where a.id=object_id('dali') and a.name='ID' and a.id=b.id and b.constid=c.id and c.name like 'PK%'exec sp_fulltext_table 'dali','create','My_FullDir',@Key ----这两句是为全文索引,对表实行标志

sp_fulltext_column 'dali','MyImage','add',0x0804,'FileType' ---那句是钦赐MyImage列为全文索引列,FileType是项目列

------------------------------------------------4、在c盘下放二个扩展名叫doc的word文件,四个扩大名称叫xls的excel文件,二个扩张名称为htm的网页文件,个增添名字为bmp的图样共4个,大家可根据实情归入!

5、插入数据创建上面那一个蕴藏过程

代码如下复制代码

--------------------------------------------------CREATE PROCEDURE sp_textcopy @srvname varchar (30), @login varchar (30), @password varchar (30), @dbname varchar (30), @tbname varchar (30), @colname varchar (30), @filename varchar (30), @whereclause varchar (40), @direction char(1) AS /* 那是选取textcopy工具将文件插入到数据库中,假如有前台工具得以用前台开辟工具将文件插入,这里为了演示 */DECLARE @exec_str varchar (255) SELECT @exec_str='textcopy /S '+@srvname+' /U '+@login+' /P '+@password+' /D '+@dbname+' /T'+@tbname+' /C '+@colname+' /W'+@whereclause+' /F'+@filename+' /'+@directionEXEC master..xp_cmdshell @exec_str----------------------------------------------------

insert dali values(1,0x,'doc','大力的doc'卡塔尔 ---此中其次列是 0x 它是一个16进制数对应image列,是必需的,不要写null,第三列是文件类型,既扩充名

sp_textcopy '你的服务器名','sa','你的密码','test','dali','MyImage','c:大力的doc.doc','where ID=1','I'-------依次参数是:实例名,顾客名,密码,数据库名,表名,image列名,路线及文件名,条件(你必须要确认保障它只选用风度翩翩行State of Qatar,I---------------------------------------------------------------------------------------------------------------------insert dali values(2,0x,'bmp','图片'卡塔尔(قطر‎sp_textcopy '你的服务器名','sa','你的密码','test','dali','MyImage','c:图片.bmp','where ID=2','I' --注意尺度是 ID=2

insert dali values(3,0x,'xls','Excel文件')sp_textcopy '你的服务器名','sa','你的密码','test','dali','MyImage','c:Excel文件.xls','where ID=3','I' --注意尺度是 ID=3

insert dali values(4,0x,'htm','网页')sp_textcopy '你的服务器名','sa','你的密码','test','dali','MyImage','c:网页.htm','where ID=4','I' --注意尺度是 ID=4

----------上边的讲话,要保险项目雷同,路线准确,条件唯意气风发准确应该就足以了

6、填充全文索引

代码如下复制代码

sp_fulltext_table 'dali','start_full' ---第二个参数是表名,第一个参数是运转表的全文索引的一心填充

7、能够起来你的尝试了

代码如下复制代码

select * from dali where contains(MyImage,'J老师')

select * from dali where contains(MyImage,'海老师')

------END------------调节和测量检验意况:SQLServer二零零三集团版、Windows二〇〇一尖端服务器

全文索引中的多少个难题:

1.招来时现身谬误:服务器: 新闻 7619,等级 16,状态 1,行 2查询子句只含有被忽视的词

这种处境修改 MssqlFtdataSqlserverConfig 下对应语言的打扰词列表文件

2.改进了烦闷词文件,查询普通话时照旧现身上述难点a.首先检查你的SQL有未有安装新型的补丁,检查的法子是在询问解析器中运作:select @@version假设出来的版本号是8.00.760以下,则注解你未设置sp3的补丁,要装上.

SQL补丁下载:aspx?displaylang=zh-cnFamilyID=9032f608-160a-4537-a2b6-4cb265b80766">

专心下载后,奉行的时候是解压,要在解压后的目录中实行setup.bat才是实在的安装

b.配置全文索引时,单词断字符选取粤语(中夏族民共和国卡塔尔

c.Noise.chs文件中至稀有三个单词,比方:?

d.假若在全文检索时,你能符合规律纠正郁闷词文件,表明你的全文字笔迹查验索未有行使上这一个文件假如您安顿的全文字笔迹核查索应该要用到这么些文件,那就在铺子微处理器--展开你的数据库--右键全文目录--重城建总公司体全文目录

3.表中的数据变动后,检索不到点子1. 右键你的表--全文索引表--启用增量填充方法2. 右键你的表--全文索引表--改良追踪,那样之后的改进会自动填写(有必然延迟卡塔尔(قطر‎

先看二个实例sql2007的

代码如下复制代码

--查看当前数据库状态 1为早就启用了全文索引 SELECT DATABASEPROPERTY ('数据库名','IsFulltextEnabled'State of Qatar --打开FullText功效 execute sp_fulltext_databse 'enable' --关闭此效用 execute sp_fulltext_databse 'disable' --创设全文索引目录 --删除全文目录 DROP FULLTEXT 目录名 CREATE FULLTEXT CATALOG 目录名 --

每一个表只可以够有二个全文索引,存放在内定的目录目录里,能够经过指导创立,也能够经过SQL创设

indexname是指已存在的依据钦命表的并世无两索引名.并不是独一无二索引列名.要是索引不真实,须求先创造独一索引. --删除全文索引 DROP FULLTEXT INDEX ON 表名 CREATE FULLTEXT INDEX ON 名称 (索引1,索引2...卡塔尔 KEY INDEX indexname ON 表名 --全文索引查询 Select * from 表名 where contains( 列名, ' 202* or 2* ') Select * from 表名 where FREETEXT( 列名, ' 202* and 2* ') /*注: FREETEXT语句的效果与利益是在一个表的具有列或内定列中查找叁个随便文本格式的字符串,并 再次来到与该字符串相称的数据行。所以,FREETEXT语句所推行的机能又称做自由式全文查询。

CONTAINS语句的职能 是在表的有着列或内定列中搜寻:叁个字或短语;三个字或短语的前缀;与二个字相近的另贰个字;多个字的派生字;二个重复现身的字。 */

本文由10bet手机官网发布于微服架构,转载请注明出处:全文检索,SQLserver2008全文检索使用方法

上一篇:查询给定日期是当月的第几周sql查询语句,查询给定日期所在星期的上一个星期日 下一篇:最常用的SQL语句,sql常用语句
猜你喜欢
热门排行
精彩图文