(前端理论为摘抄)大家都知道LIKE查询很慢,全文索引就是事先做好相关的索引,表示哪个主题词可以在哪些记录里找到,甚至事先计算好,检索时可以把相关度高的先列出来,这可以大大提高检索的速度。

打个比方,你有很多的小抽屉,每个抽屉里面放一些杂物,假如你要找东西,最原始的方法就是一个个抽屉翻,这就是没有索引的情况。

假如聪明一点,给抽屉编号(唯一键),把哪个号码的抽屉有什么东西记录在纸上,找东西先看看这张纸,这就是普通索引,假如你要知道哪个抽屉有什么,你可以在纸上迅速找到抽屉号码(大家知道这是使用查找树),然后得到相关的信息,这种情况普通索引是很快的;但是要找到一个特定的东西哪些抽屉有,你就要把整张纸遍历一次,这就是LIKE查询,假如你要找哪些抽屉同时有2种甚至更多种物品,LIKE就更加繁琐了。假如一个表有上千万的纪录,大家可以想象查询的代价。

可以换一个思路,另外找张纸,记录一样东西存在于哪些抽屉:

夹子:1,3,4,5,6,9,12...

钱币:2,3,4,7,12...

药丸:1,3,5,6...

这样找到某样东西或者某几样东西都很容易。

全文索引和普通的SQL索引有很多的区别:

普通 SQL 索引全文索引 存储时受定义它们所在的数据库的控制。存储在文件系统中,但通过数据库管理。 每个表允许有若干个普通索引。每个表只允许有一个全文索引。当对作为其基础的数据进行插入、更新或删除时,它们自动更新。将数据添加到全文索引称为填充,全文索引可通过调度或特定请求来请求,也可以在添加新数据时自动发生。 不分组。在同一个数据库内分组为一个或多个全文目录。使用 SQL Server 企业管理器、向导或 Transact-SQL 语句创建和除去。使用 SQL Server 企业管理器、向导或存储过程创建、管理和除去。

--参考表QQblog(仅供参考)

Create table QQBlog
(id char(10) Constraint PK_Id primary key,--注意:蓝色为关键字,Primary key为主键约束;PK_ID为主键约束名topic varchar(30)not null,--标题一般不允许空,所以设置不为"空"QQcontent varchar(8000),--内容kind char(8)Constraint DF_Kind default '个人日志',--原创、转载,个人日志begintime datetime Constraint DF_BeginTime default getdate(),--getdate():获得当前日期和时间visitCount int,--访问量replyCount int --回复量
)insert qqblog(topic,QQcontent,kind) values('白雪公主','在丹麦的一个小农村,里面发生了一起感人的事件,一个青蛙','日志')
insert qqblog(id,topic,QQcontent,kind) values('blog07','软件','安阿饿是NIIT有个人马化腾,开发了一款软件,会讲故事,java c#,右微软买了该软件','日志')
insert qqblog(topic,QQcontent,kind) values('QQ之父','1998年,马化腾和几个同学成立了自己的软件公司,当时公司很小,主营业务是为其他公司做软件外包.据马化腾回忆说,当时跟他很熟的丁磊正在做邮箱系 统,之后也卖了很多版本,“我也做过邮件,也给寻呼台做过互动系统,比如短信查邮件什么的,即时通信是其中一个项目.”做好了软件系统,接下来就是销售,“当时并不止我一家在做这种通信产品,有一次投标,为了抢先,我甚至在产品成型前就先写好了投标书.”结果当然是投标失败,“但现在想想还真的是幸运,那个拿到项目的公司没有再维护产品,只有我们的QQ被砸在手上,才会持续做下去.”连马化腾自己都没有想到,到了2000年的时候,随便走进一个网吧,聊天工具QQ跳动的企鹅已经成了流行,“我没想到那么多人在网上争着和认识不认识的人聊天,好多人为此刻苦学习打字,真疯狂.”
','日志')
insert qqblog(topic,QQcontent,kind) values('QQ之父2',' “要说煎熬,我创业最煎熬的就是这段时间,我不喜欢这样的拖延,那时候纳斯达克已经快崩盘了.”产品有人用,离公司上市还有一大段距离,无论如何,2000年的腾讯还是个小公司,而且它的驻地在深圳,“深圳没有北京的海归圈子,当时的风险投资也不懂,全靠高交会帮了忙.”马化腾回忆说,看在国外的前辈ICQ的成功经验上,盈科数码和IDG投资了腾讯,“两家一起进,壮着胆子.”但马化腾的融资过程并不顺利,随着互联网冬天的临近,IDG投资完之后一直忙着为马化腾的公司找下家,“找过搜狐、新浪,他们都没看得上眼.”马化腾记 得,当时任职搜狐的古永锵和冯珏都到腾讯看过一眼,2001年春天,马化腾自己又去新浪见了王志东和汪延,但后来都没了消息.最后进场的买家是传媒集团MIH,而最令马化腾心焦的一段创业经历也自此开始,“我愿意找更有实力的投资人,IDG也愿意出售股权,但盈科不答应.”当时的盈科,小超人李泽楷的数码港计划如日中天,“他甚至还找过王晶这样的导演来我们公司参观,探讨前景.”
','日志')
insert qqblog(topic,QQcontent,kind) values('QQ之父3','“要说煎熬,我创业最煎熬的就是这段时间,我不喜欢这样的拖延,可当时盈科不说买也不说卖,把我们晾在一边,等到最后终于定下来出售已经是2001年6月,那时候纳斯达克已经快崩盘了.”资本市场的幸运与否也许真的很难判断,到了2008年6月,因为股价增长强劲和稳定,腾讯成为恒生指数的成分股,它顶替的正是盈科.马化腾 王志东和汪延受惠母亲一本清晰的财务账“她很负责任地帮我整理财务报表,后来公司搬家,搬那些桌椅板凳都是家里人帮忙,因为公司要减轻负担.”现在看起来,马化腾的创业途径很符合年轻人对所谓“知识英雄”的想象,写代码出身,几个同学合伙创业,一起加班吃盒饭,熬夜改产品,凭借创意和勤奋取得成功,慢慢地公司上市,简陋的办公室换成宏伟的大楼,创始人进入富豪榜.但实际的情形要艰苦得多,以至于马化腾需要给自己最感谢的人列一个长长的名单,“要感谢家里人,最开始我妈不同意,我爸挺支持我的,可最早的董事长却是我母亲.”马化腾回忆说,一开始,几个年轻人是拿着母亲的退休证去注册的公司,但这位法人母亲几乎都没来过公司,“可是她很负责任地帮我整理财务报表,后来 公司搬家,搬那些桌椅板凳都是家里人帮忙,因为公司要减轻负担.”马化腾的感谢名单里还有当时深圳电脑协会的秘书长“丁阿姨”,还有现在深圳电信局的一个朋友,“是他们帮我们找了办公场地,免我们的租金,联系托管服务器,现在看好像这些事情很小,但没有这些,当时真不敢往下走.”也许是对创业过程中这些帮助难以忘却,马化腾在招聘时定下一个标准——“人品好”,“我几乎是有点偏执地超级强调这一点,我们几个创始人都喜欢简单,不喜欢搞政治化,哪怕你说我不懂也好,我就是强调简单,人品第一,这样的毕业生进入我的公司培养三年,我让他成为业务骨干.”
','日志')Declare @i int --定义@i变量为int型
set @i=152792  --变量的初始化
while @i<=1000000
beginset @i=@i+1    --每次加1insert QQBlog(id,topic,QQcontent,kind) values('blog'+convert(char(7),@i),'QQ历史','要说煎熬,我创业最煎熬的就是这段时间,我不喜欢这样的拖延,可当时盈科不说买也不说卖,把我们晾在一边,等到最后终于定下来出售已经是2001年6月,那时候纳斯达克已经快崩盘了.”资本市场的幸运与否也许真的很难判断,到了2008年6月,因为股价增长强劲和稳定,腾讯成为恒生指数的成分股,它顶替的正是盈科.马化腾 王志东和汪延受惠母亲一本清晰的财务账“她很负责任地帮我整理财务报表,后来公司搬家,搬那些桌椅板凳都是家里人帮忙,因为公司要减轻负担.”现在看起来,马化腾的创业途径很符合年轻人对所谓“知识英雄”的想象,写代码出身,几个同学合伙创业,一起加班吃盒饭,熬夜改产品,凭借创意和勤奋取得成功,慢慢地公司上市,简陋的办公室换成宏伟的大楼,创始人进入富豪榜.但实际的情形要艰苦得多,以至于马化腾需要给自己最感谢的人列一个长长的名单,“要感谢家里人,最开始我妈不同意,我爸挺支持我的,可最早的董事长却是我母亲.”马化腾回忆说,一开始,几个年轻人是拿着母亲的退休证去注册的公司,但这位法人母亲几乎都没来过公司,“可是她很负责任地帮我整理财务报表,后来 公司搬家,搬那些桌椅板凳都是家里人帮忙,因为公司要减轻负担.”马化腾的感谢名单里还有当时深圳电脑协会的秘书长“丁阿姨”,还有现在深圳电信局的一个朋友,“是他们帮我们找了办公场地,免我们的租金,联系托管服务器,现在看好像这些事情很小,但没有这些,当时真不敢往下走.”也许是对创业过程中这些帮助难以忘却,马化腾在招聘时定下一个标准——“人品好”,“我几乎是有点偏执地超级强调这一点,我们几个创始人都喜欢简单,不喜欢搞政治化,哪怕你说我不懂也好,我就是强调简单,人品第一,这样的毕业生进入我的公司培养三年,我让他成为业务骨干.”
','日志')
endselect * from qqblog
sp_fulltext_database enable   --1.激活数据使能全文索引
go
create fulltext catalog cat1 as default  --2.建立全文目录:建好在FTData下面.指定该目录为默认目录
create fulltext index on QQBlog(QQcontent) key index PK_Id  --3.建立全文索引 on cat1 with  NO POPULATION ,创建之后不填充
--
alter fulltext index on QQBlog start full population--4.起用填充
--只有在用户使用 START FULL、INCREMENTAL 或 UPDATE POPULATION 子句执行 ALTER FULLTEXT INDEX 命令后,才会填充索引。
--开始/增长/更新
--5.使用全文索引
--在qqblog表中查找包含马化腾或盈科  的所有记录
select * from qqblog where qqContent like '%马化腾%' or qqContent like '%盈科%' --51秒
select count(*) from qqblog --161012select * from qqblog where freetext(QQcontent,'马化腾 在 王志东')--freetext(列名,'要查找内容')--23秒--161010
--马化腾 王志东 是马化腾或王志东select * from qqblog where contains(QQContent,'"马化腾" or "王志东"')--161007
--contains:"马化腾 王志东",这是一个短语
--有点区别???
select * from qqblog where QQContent like '%马化腾%'
--要注意查找的时候不要包含噪音词:在FTData下面的noise...文件下
/*记录的比较凌乱,请大家原谅,希望能从中找到适合自己的东东*/-- contains谓词主要是针对单字或句子做查询。-- freetext谓词则会将指定的句子分解为一个个的单字,然后查询这些单字。
----------------------------------contains-------------------------------------------搜寻书籍名称字段中有 windows  computer print 这个单词的记录select * from 书籍 where
contains(书籍名称,'"windows or computer or print"')select * from 书籍 where contains(书籍名称,'"windows"')--搜寻书籍字段中包含短语的记录
select * from 书籍 where contains(书籍名称,'"a computer failure"')
--例:this is a computer,failure to work 此句子也将被搜寻出来。--带有通配符的查询
select * from 书籍 where contains(书籍名称,'"sea*" OR "bread*"')--下面的示例返回包含短语 "sasquatch ale" 或 "steeleye stout" 的所有产品。use northwind
go
select productname
from products
where contains(productname, ' "sasquatch ale" or "steeleye stout" ')
go--------------------------------freetext----------------------------select * from 书籍 where freetext(地址,' "I like windows 2000 and photoshop 5" ')select * from 书籍 where freetext(地址,' "北京市大兴区林校北路" ')-- a. 使用 freetext 搜索包含指定字符值的单词
--    下例搜索产品描述中含有与 sweetest bread、candy、dry 和 meat 相关的词语的
--    所有产品类别,如 breads、candies、dried 和 meats 等。use northwind
go
select categoryname
from categories
where freetext (description, 'sweetest candy bread and dry meat' )
go--b. 在全文检索中使用变量
--   下例使用变量而不是特定的搜索术语。use pubs
go
declare @searchword varchar(30)
set @searchword ='moon'
select pr_info from pub_info where freetext(pr_info, @searchword)

转载于:https://www.cnblogs.com/mjsn/archive/2010/09/22/6151032.html

MSSQL系列之十五 全文索引相关推荐

  1. ASP.NET企业开发框架IsLine FrameWork系列之十五--框架配置信息大全(下)

    ASP.NET企业开发框架IsLine FrameWork系列之十五--框架配置信息大全(下) 接上文   三.IsLine.ExceptionProcess 部分 这部分主要管理异常,对异常的管理分 ...

  2. IT职场人生系列之十五:语言与技术II

    本文是IT职场人生系列的第十五篇 本篇延续了技术与语言I的内容(之十二),搜集了之后大家的一些评论和我的反馈,整理在这里. "新人学老技术有风险"的实质 其实不是说老技术没有学习的 ...

  3. Reflex WMS入门系列二十五:将叉车纳入系统进行管理

    Reflex WMS入门系列二十五:将叉车纳入系统进行管理 据笔者所知,SAP WM 模块里是不对仓库里常用的叉车等仓库管理工具进行管理的.笔者发现,Reflex WMS系统则会在很多仓库部门日常操作 ...

  4. 基础系列【十五】--Pattern

    基础系列[十五]--Pattern Pattern Pattern java.lang.Object java.util.regex.Pattern (public final class Patte ...

  5. PCA主成分分析算法专题【Python机器学习系列(十五)】

    PCA主成分分析算法专题[Python机器学习系列(十五)] 文章目录 1. PCA简介 2. python 实现 鸢尾花数据集PCA降维 3. sklearn库实现 鸢尾花数据集PCA降维案例    ...

  6. 【SQL开发实战技巧】系列(十五):查找最值所在行数据信息及快速计算总和百之max/min() keep() over()、fisrt_value、last_value、ratio_to_report

    系列文章目录 [SQL开发实战技巧]系列(一):关于SQL不得不说的那些事 [SQL开发实战技巧]系列(二):简单单表查询 [SQL开发实战技巧]系列(三):SQL排序的那些事 [SQL开发实战技巧] ...

  7. 软考高级信息系统项目管理师系列之四十五:信息系统综合测试与管理

    软考高级信息系统项目管理师系列之四十五:信息系统综合测试与管理 一.信息系统综合测试与管理 二.软件测试模型 1.V模型 2.W模型 3.H模型 4.X模型 5.前置测试模型 三.软件测试类型 1.按 ...

  8. coreelec 下载app_DY的瞎折腾系列 篇十五:N1多媒体系统CoreELEC 百度云下载指南...

    DY的瞎折腾系列 篇十五:N1多媒体系统CoreELEC 百度云下载指南 2019-04-26 15:28:57 64点赞 427收藏 117评论 你是AMD Yes党?还是intel和NVIDIA的 ...

  9. SpringCloud技术指南系列(十五)分布式链路跟踪Sleuth与Zipkin实现

    SpringCloud技术指南系列(十五)分布式链路跟踪Sleuth与Zipkin实现 一.概述 分布式链路追踪,是一种用于分析和监控应用程序的方法,尤其是那些使用微服务架构的那些应用.分布式链路跟踪 ...

最新文章

  1. 《Windows核心编程》学习笔记(10)– 同步设备I/O与异步设备I/O
  2. python电脑下载网址-Python
  3. 微信小程序,时间戳和日期格式互相转化
  4. VoIP协议标准浅析
  5. 关于 Apache Maven 您不知道的 5 件事
  6. [知了堂学习笔记]_网络基础知识_1.OSI参考模型(网络七层协议)
  7. vb6.0服务器组件安装失败,win10安装vb6.0总是失败怎么办?win10 vb6.0安装不了的解决办法...
  8. python判断端口是否开放_Python扫描IP段查看指定端口是否开放的方法
  9. 华为周跃峰:揭秘“关于GaussDB数据库的五大谎言”
  10. 与台风相伴,他们是前行的逆风者
  11. Beginning WF 4.0翻译——第四章(传递参数)
  12. 天庭最牛系统 推荐下载_围观RecSys2020 | 推荐系统顶会说了啥?(附论文打包下载)...
  13. python匿名函数就是没有名字的函数_python 之 匿名函数
  14. Gstreamer离线版官方文档(十五)
  15. Java I/O系统之Object流
  16. 地图比例尺与空间分辨率之间的关系_地图比例尺与遥感影像分辨率的关系探讨...
  17. 2018.10.31国家统计局行政省市区数据and数据库建表
  18. 金仓数据库KingbaseES实现主键自增的方式
  19. java 蜂鸣器_蜂鸣器的介绍
  20. 模式识别与机器学习(作业5)基于PCA–LDA的人脸识别

热门文章

  1. Springboot01创建第一个程序
  2. 安卓开发_自定义控件_界面的简单侧滑
  3. 03 ansible核心模块 之 文件类型模块
  4. 微信支付get_brand_wcpay_request:fail
  5. 【BZOJ4008】【HNOI2015】亚瑟王 [期望DP]
  6. 【多项式求逆】[BZOJ3456]城市规划
  7. cdoj1342郭大侠与甲铁城
  8. WPF 自动选择dll,以SQLite为例
  9. C++函数指针和类成员函数指针
  10. 豆米--基于豆瓣API的WP7书籍搜索工具开源啦!