在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
  详细介绍请查看全文:https://cnblogs.com/qianzf/
  原文博客的链接地址:https://cnblogs.com/qzf/
 

sqlserver如何添加全文索引的更多相关文章

  1. Sqlserver 中添加数据库登陆账号并授予数据库所有者权限

    Sqlserver 中添加数据库登陆账号并授予数据库所有者权限 USE master GO --通过sp_addlogin创建登录名 --DEMO:登陆账号 --123456:登陆密码 ' --切换数 ...

  2. SQLServer如何添加try catch

    在.net中我们经常用到try catch.不过在sqlserver中我们也可以使用try catch捕捉错误,在这里把语法记录下来和大家分享一下, --构建存储过程CREATE PROCEDURE ...

  3. 为SQL表添加全文索引范例

    --范例: --为HR_Job中的JobTitle,JobDes创建全文索引 execute sp_fulltext_catalog 'boli188', 'create' --创建全文目录,boli ...

  4. SQLServer之创建全文索引

    创建全文索引的必须条件 必须具有全文目录,然后才能创建全文索引. 目录是包含一个或多个全文索引的虚拟容器. 使用SSMS数据库管理工具创建全文索引 1.连接数据库,选择数据库,选择数据表->右键 ...

  5. SQLServer之添加聚集索引

    聚集索引添加规则 聚集索引按下列方式实现 PRIMARY KEY 和 UNIQUE 约束 在创建 PRIMARY KEY 约束时,如果不存在该表的聚集索引且未指定唯一非聚集索引,则将自动对一列或多列创 ...

  6. 为sqlserver数据库添加专用用户名

    在安全里面右键添加登录名,输入登录名与密码(可以取消强制密码策略)然后选择用户映射的数据库,勾选db_owner即可.

  7. sql-server的添加数据库文件(日志数据)以及收缩数据库文件(日志数据)

    环境: SSMS sql-server2016 一.为数据库添加数据文件 添加日志数据文件 以下是添加数据文件和日志文件的代码 ALTER DATABASE [joinbest] ADD FILE ( ...

  8. table的复制 SqlServer 数据库添加临时表(select 字段1,字段2,字段3 into)

    select  字段1,字段2,字段3 into tempname  form  table  where table.id=1; oralce : insert into MID_DRUG_DETA ...

  9. 在MySQL或者SQLServer中,添加对象后自动返回主键到对象模型中的配置方式

    设置是否使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中.MySQL和SQLServer执行auto-generated key fiel ...

随机推荐

  1. LR安装No Background bmp defined in section General entry BGBmp的解决办法

    问题描述:我在win10装LR11总是报这个错误:No Background bmp defined in section "General" entry "BGBmp& ...

  2. Redis windows环境安装 以及 redis整合spring

    Redis对于Linux是官方支持的,安装和使用没有什么好说的,普通使用按照官方指导,5分钟以内就能搞定.详情请参考: http://redis.io/download Redis官方是不支持wind ...

  3. [CTSC2012]熟悉的文章 后缀自动机

    题面:洛谷 题解: 观察到L是可二分的,因此我们二分L,然后就只需要想办法判断这个L是否可行即可. 因为要尽量使L可行,因此我们需要求出对于给定L,这个串最多能匹配上多少字符. 如果我们可以对每个位置 ...

  4. 【BZOJ3166】ALO(主席树)

    [BZOJ3166]ALO(主席树) 题面 权限题qwq 资磁洛谷 题解 用一个\(set\)求出左右侧比这个数大的第\(2\)个数, 然后用可持久化\(Trie\)算一下就好啦 #include&l ...

  5. Linux系统启动详解(二)

    上节讲到了Linux启动大体流程,及grub的作用,本节主要扯扯initramfs的那些事,并且通过简单修改initramfs,将整体操作系统运行到了内存中. 3       initramfs 3. ...

  6. spark(二)

    一.spark的提交模式 --master(standalone\YRAN\mesos) standalone:-client -cluster  如果我们用client模式去提交程序,我们在哪个地方 ...

  7. 框架----Django框架知识点整理

    一.cbv cbv(class-base-view) 基于类的视图 fbv(func-base-view) 基于函数的视图 a.基本演示 urlpatterns = [ url(r'^login.ht ...

  8. UESTC--1655

    原题链接:http://acm.uestc.edu.cn/problem.php?pid=1655 分析:注意可能会反向. #include<iostream> #include<c ...

  9. php curl使用ss代理

    1.安装 ss,过程略 2.ss 配置文件 { "server":"x.x.x.x", #你的 ss 服务器 ip "server_port" ...

  10. 手脱EZIP v1.0

    一.单步 1.载入PEID查壳 EZIP v1.0 2.载入OD,一上来就是一个大跳转,F8单步一直走 0040D0BE > $ /E9 jmp Notepad.004102DC ; //入口点 ...