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条数据

转自:

方今搜索了弹指间全文字笔迹核算索,开掘了有的难点,今后计算如下:全文索引和询问概念(摘自SQL联机援助卡塔尔国全文索引、查询和同步化最重要的安插需要是,在登记举行全文检索的富有表上都有一个独一的全文键列。全文索引对应用的最重要字及其所在地方实行追踪。比方,假定有三个对DevTools表的全文索引。全文索引可能提议在Abstract列的第4贰16个和第9捌16个单词处找到了单词Microsoft,所在的行与ProductID6提到。该索引布局帮助对持有包涵被索引单词的项举办有效检索,以致高级寻找操作,如短语检索和接近检索。为防止全文索引因含有众多对搜索未有利于的词而变得肥胖,a、and、is或the那类额外的词都忽视不计。譬如,钦命”theproductsorderedduringthesesummermonths”与钦定”productsorderedduringsummermonths”是一律的。有那八个字符串的行都会被重回。目录\Mssql\Ftdata\Sqlserver\Config下提供了二种语言的骚扰词列表。在装置带有全文检索支持的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’sEdgeA027AsimovFoundationandEmpireC011ClarkeChildhood’sEndV109VerneMysteriousIsland假定想行使一个全文字笔迹核准索查询来查究包罗单词Foundation的书名。在本例中,将从全文索引得到值A025和A027。然后SQLServer用这个键值和其余栏的音讯响应该查询。下表展现了储存全文索引数据所接纳的言语。这个语言基于SQLServer安装时期选用的Unicode排序法规区域安装标志符。Unicode排序准则区域设置标志符全文数据存款和储蓄所用的语言——————————————————普通话注音符号繁体粤语普通话拼音简体普通话汉语笔画简体粤语汉语笔画繁体普通话韩语立陶宛语意大利共和国语德文西班牙语Lithuania语通用UnicodeLithuania语希腊语希伯来语德文函电子通信话簿Türkiye Cumhuriyeti语意大利共和国语意国语乌克兰语菲律宾语斯拉维尼亚语Unicode立陶宛共和国语俄文丹麦语捷克语Unicode韩Vince洛伐克语菲律宾语瑞典王国/意大利语乌克兰语此列表中并未有的别样具备Unicode排序法则区域安装标记符值都映射到利用空格分隔单词的中性语言单词的断字符和词干分隔符。表达Unicode排序准则区域安装标记符设置用于全体可进展全文索引的数据类型。假使为char、varchar或text类型列的排序次序设置的语言类型,不是Unicode排序法规区域设置标记符语言,那么在对char、varchar和text类型的列举办全文索引和查询时,照旧接纳Unicode排序准则区域设置标记符值。成立全文索引(以索引image列为例,别的项目字段大概雷同State of Qatar标题全文索引image列,全计谋!作者pengdali[原作]最首要字全文索引image前些天“千载奇遇”的停电了,看了一天书。早晨搞了一下全文索引,决定把资历贴出来,小编竭尽写的详尽,大家一块儿学习,接待指正!1、运营MicrosoftSearch服务发轫菜单–SQL程序组–服务微型机–下拉筐–MicrosoftSearch服务–运行它2、..\MicrosoftSQLServer\MSSQL\FTDATA\SQLServer\Config\目录里建叁个非空noise.chs文件非空noise.chs文件,也是有的人讲是空的noise.chs文件,但自己老是都往里写多少个空头的字母。3、营造情状展开查询深入分析器–推行下列脚本:——————————————–createdatabasetest—创造test数据库usetest—选用test数据库createtabledali(IDintnotnullprimarykey,MyImageimage,FileTypevarchar(255State of Qatar,FileNmaevarchar(255State of QatarState of Qatar—创立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列名,路线及文件名,条件(你不得不确认保证它只选用一行State of Qatar,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————调节和测量试验情状:SQLServer二〇〇一集团版、Windows2001高端服务器全文索引中的多少个难题:1.搜索时现身谬误:服务器:新闻7619,品级16,状态1,行2查询子句只富含被忽略的词这种景色改过\Mssql\Ftdata\Sqlserver\Config下对应语言的搅动词列表文件2.改过了烦懑词文件,查询汉语时依旧现身上述难题a.首先检查你的SQL有未有安装新型的补丁,检查的点子是在询问剖析器中运作:select@@version假诺出去的版本号是8.00.760以下,则申明你未设置sp3的补丁,要装上.SQL补丁下载:
注意下载后,施行的时候是解压,要在解压后的目录中履行setup.bat才是确实的装置b.配置全文索引时,单词断字符选取”粤语(中夏族民共和国卡塔尔(قطر‎”c.Noise.chs文件中至少有八个单词,举个例子:?d.借使在全文字笔迹核准索时,你能经常修正烦恼词文件,表明您的全文字笔迹核实索未有采纳上那几个文件假诺你安顿的全文字笔迹考验索应该要用到那个文件,那就在公司微电脑–张开你的数据库–右键全文目录–重城建总公司体全文目录3.表中的数据变动后,检索不到方式1.右键你的表–全文索引表–启用增量填充方法2.右键您的表–全文索引表–修改追踪,那样之后的改良会自动填写(有早晚延迟卡塔尔国4.sql二零零二才支撑对image列的全文字笔迹核算索

新近寻找了一下全文检索,发掘了一部分标题,以后总结如下:

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

全文索引、查询和同步化最珍视的规划须要是,在登记实行全文字笔迹核准索的具有表上都有三个独一的全文键列(恐怕单列主键)。全文索引对运用的要害字及其所在地点进行追踪。

比方,假定有三个对 DevTools 表的全文索引。全文索引恐怕建议在 Abstract
列的第 423 个和第 982 个单词处找到了单词 Microsoft,所在的行与 ProductID
6
关联。该索引结构帮忙对具备蕴涵被索引单词的项实行中用检索,以至高端寻觅操作,如短语检索和周围检索。

为严防全文索引因包涵众多对搜索未有利于的词而变得丰腴,a、and、is 或 the
那类额外的词都忽略不计。譬如,内定”the products ordered during these
summer months”与钦点”products ordered during summer
months”是一模一样的。有那八个字符串的行都会被再次来到。

目录 \Mssql\Ftdata\Sqlserver\Config
下提供了各个语言的打扰词列表。在安装带有全文字笔迹核实索扶植的 Microsoft®
SQL Server™
时会成立那几个目录,并同一时间安装烦恼词文件。忧虑词文件能够编写制定。比方,高技术集团的系统管理员能够把单词
computer
加多到他们的打扰词表中去。(假若编辑干扰词文件,则必得在改造生效以前再度填写全文目录。)下表展现了干扰词文件及其对应的言语。

干扰词文件      语言


Noise.chs      简体中文
Noise.cht      繁体粤语
Noise.dat      语言中性
Noise.deu      德语
Noise.eng      英语(英国)
Noise.enu      英语(美国)
Noise.esn      Slovak语
www.463.com,Noise.fra      法语
Noise.ita      意大利共和国语
Noise.jpn      日语
Noise.kor      韩文
Noise.nld      荷兰语
Noise.sve      瑞典语

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

Book_No   Writer     Title


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

若果想接收叁个全文字笔迹考验索查询来寻找包涵单词 Foundation
的书名。在本例中,将从全文索引得到值 A025 和 A027。然后 SQL Server
用这么些键值和此外栏的新闻响应该查询。

下表展现了积攒全文索引数据所采纳的语言。那么些语言基于 SQL Server
安装时期选拔的 Unicode 排序法则区域安装标志符。

Unicode 排序法规区域设置标志符    全文数据存款和储蓄所用的语言

发表评论

电子邮件地址不会被公开。 必填项已用*标注