博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sqlserver如何添加全文索引
阅读量:7249 次
发布时间:2019-06-29

本文共 2525 字,大约阅读时间需要 8 分钟。

在SQL Server 中提供了一种名为全文索引的技术,可以大大提高从长字符串里搜索数
据的速度,不用在用LIKE这样低效率的模糊查询了。
 
下面简明的介绍如何使用Sql2008 全文索引

一、检查服务里面带有Full-text字样的服务是否存在并开启

如果不存在带有Full-text字样的服务的,确认是否安装了sqlserverFullTextSearch
 
 

--检查数据库PS2是否支持全文索引,如果不支持

--则使用sp_fulltext_database 打开该功能

if(select databaseproperty('PS2','isfulltextenabled'))=0 execute sp_fulltext_database 'enable'

 

二、新建全文目录

全文目录是用来存储全文索引的

三、为表定义全文索引

四、点击下一步,按提示选择

1.确认下一步

2.选择唯一索引,通常是主键

3.选择要建立的全文索引列,对于断字符的选择如果列存的是中文就选择chinese,如果是英文就选择English

4.选择索引更新方式,可以先自动更新,以后数据量大了可以设置添加全文索引的计划

5.选择全文目录

五、全文索引的SQL查询关键字

建立好全文索引后就可以使用SQL语句来查询了,主要用带三个关键字 CONTAINS、FREETEXT、CONTAINSTABLE和FREETEXTTABLE

1. CONTAINS 

搜索单个词和短语的精确或模糊的匹配项,要搜索的内容必须是个有意义的词语,比如说“苹果”、“建设厅”,不能是一些没意义的词语,比如“阿迪撒啊是”,“儿儿的”这样的词语即使
LIKE是能查询出来,但全文索引对这样没意义的词语可能没有建立索引,查不出来
  1. SELECT *   
  2. FROM dbo.Business  
  3. WHERE CONTAINS(Address,'旅游')  
实现功能:查询Business表中Address列包含“旅游”的行
详细查看:

2. FREETEXT

和CONTAINS类似,不同的是它会先把要查询的词语先进性分词然后在查询匹配项
  1. 01.select *    
  2. 02.from dbo.Business     
  3. 03.where freetext(Address,'带婴儿旅游')  
详细查看:

3.CONTAINSTABLE

在查询方式上与 CONTAINS 几乎一样。但CONTAINSTABLE 返回的是符合查询条件的表,在 SQL 语句中我们可以把它当作一个普通的表来使用,并且使用 CONTAINSTABLE 的查询对每一行返回一个相关性排名值 (RANK) 和全文键 (KEY)。
  1. SELECT  *  
  2. FROM    Business AS FT_TBL  
  3.         INNER JOIN CONTAINSTABLE(Business, *, 'ISABOUT (婴儿 WEIGHT (.8),赤水 WEIGHT (.4) )')  
  4.         AS KEY_TBL ON FT_TBL.BusinessId = KEY_TBL.[KEY]  
  5. ORDER BY KEY_TBL.RANK DESC  
ISABOUT 是这种查询的关键字,weight 指定了一个介于 0~1之间的数,类似系数。表示不同条件有不同的侧重。
CONTAINSTABLE 返回的表包含有特殊的两列:KEY,RANK。
被全文索引的表必须有唯一索引。这个唯一的索引列在返回的表中就成为 KEY。我们通常把它作为表连接的条件。
在某些网站搜索时,结果中会出现表示匹配程度的数字,RANK 与此类似。它的值在0~1000之间,标识每一行与查询条件的匹配程度,程度越高,RANK 的值大,通常情况下,按照 RANK 的降序排列。
 详细查看:

4. FREETEXTTABLE

在查询方式上与 FREETEXT 几乎一样。但 FREETEXTTABLE 返回的是符合查询条件的表,在 SQL 语句中我们可以把它当作一个普通的表来使用,并且使用  FREETEXT  的查询对每一行返回一个相关性排名值 (RANK) 和全文键 (KEY)。
  1. SELECT  * ,  
  2.         BusinessID ,  
  3.         Address  
  4. FROM    Business AS FT_TBL  
  5.         INNER JOIN FREETEXTTABLE(Business, Address, 'ISABOUT (带婴儿旅游 WEIGHT (.8),赤水 WEIGHT (.4) )')  
  6.         AS KEY_TBL ON FT_TBL.BusinessId = KEY_TBL.[KEY]  
  7. ORDER BY KEY_TBL.RANK DESC  
详细查看:
 
 
 

--activate,是激活表的全文检索能力,也就是在全文目录中注册该表

execute sp_fulltext_table 'ProSearch','activate'

 

--填充全文索引目录

execute sp_fulltext_catalog 'ProSearchCatalog','start_full'

 

--查询全文索引是否建立完毕(0:完毕;1:正在建立)

select fulltextcatalogproperty('ProSearchCatalog','populateStatus')

 

三、介绍一下全文索引的一些相关操作

查看全文检索的配置情况:

sp_help_fulltext_catalogs -- 检查数据库有哪些全文目录sp_help_fulltext_tables ProSearchCatalog -- 查看哪些表把全文索引建立在T_testData下sp_help_fulltext_columns ProSearch -- 查看test表哪些字段配置了全文索引

 

删除全文索引必须与创建的时候倒过来一步一步操作:

drop fulltext index on test -- 撤销test上的全文检索drop fulltext catalog FT_testData -- 撤销全文目录FT_testData
 
详细介绍请查看全文
  原文博客的链接地址:
 
你可能感兴趣的文章
Markdown一看就会
查看>>
dotweb——go语言的一个微型web框架(一)
查看>>
又是一个名叫草泥马的项目:thefuck
查看>>
《七周七并发模型》作者Paul Butcher访谈问题有奖征集
查看>>
linux基本功能的一些命令(用户,系统信息,包管理等)
查看>>
使用 dnscrypt-proxy 防止 dns 污染
查看>>
专访孙睿 :能做自己,去做自己想做的,是件挺幸福的事儿
查看>>
滴滴开源跨平台统一 MVVM 框架 Chameleon
查看>>
玖锦科技完成1.1亿元融资,中信惠科基金领投
查看>>
JavaWeb_常用功能_01_文件上传
查看>>
Git for Windows 2.21.0 发布,Win 下的 Git 客户端
查看>>
JSON和XML格式转换
查看>>
XXL-RPC v1.3.2,分布式服务框架
查看>>
将c++静态库实现二次封装供java调用
查看>>
在阿里云kubernetes上部署Jenkins Master
查看>>
VueJs开发笔记—IDE选择和优化、框架特性、数据调用、路由选项及使用
查看>>
MySQL 数据库的备份与恢复
查看>>
Android中的设计模式之单例模式
查看>>
使用Cordova将您的前端JavaScript应用打包成手机原生应用
查看>>
用Python玩转微信
查看>>