首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >全文索引

全文索引

作者头像
liulun
发布2022-05-08 17:53:30
发布2022-05-08 17:53:30
6960
举报
文章被收录于专栏:liulunliulun

一:简要介绍下全文索引 可以利用索引快速访问数据库表中的特定信息。索引是对数据库表中一个或多个列的值进行排序的结构。 索引提供指针以指向存储在表中指定列的数据值,然后根据指定的排序次序排列这些指针。 数据库使用索引的方式与使用书的目录很相似:通过搜索索引找到特定的值,然后跟随指针到达包含该值的行

二:全文索引的相关操作 1.确认全文索引是否开启 对于SQL2005每个创建的数据库全文索引特性默认是开启的 可以通过这个语句来确认它是否开启了

代码语言:javascript
复制
SELECT databasePropertyex('xland','isfulltextenabled')

返回0为未开启,返回1为已开启 2.激活和禁止全文索引 禁用全文索引一定要注意,已经存在的全文目录,数据表同该目录的任何关联信息都会被删除

代码语言:javascript
复制
exec sp_fulltext_database @action = 'disable'

'enable'为激活

3.创建全文索引

代码语言:javascript
复制
use xland 
go
create fulltext index on dbo.mytable --在某个表上创建全文索引
(title language English)  --对某个列使用全文索引
key index Pk_mytable --索引名(一般就是表名前面加Pk)
on maincatalog
with change_tracking off, --关闭跟踪特性
no population --不进行初始化填充

其中Eglish可改为简体中文 可通过

代码语言:javascript
复制
select name alias from master..syslanguages

查询系统中支持的语言 修改和删除全文索引

代码语言:javascript
复制
drop fulltext index on dbo.mytable

三.全文目录的相关操作 1.创建全文目录 创建全文目录的时候,全文索引一定要为enable状态 全文目录存放的路径一定要有效

代码语言:javascript
复制
use xland
go
exec sp_fulltext_database @action = 'enable'
go
create fulltext catalog maincatalog
in path 'c:\fulltext'

更改和删除分别是alter和drop

代码语言:javascript
复制
drop fulltext catalog maincatalog

与其他的没有太多区别

2.填充全文目录 这是个后台的过程,表大的话虽然提示成功了,但是后台还在填充

代码语言:javascript
复制
alter fulltext index on dbo.mytable
start full population

代码语言:javascript
复制
use xland
go
exec sp_fulltext_table @tabname = 'dbo.mytable',
@action = 'start_full'

3.查看结果

代码语言:javascript
复制
select title from mytable where contains(title,'全文')

四:全文查询语法 1.contains:精确的匹配 where contains(*,' "my name is" ') --对短语的精确匹配,注意要有双引号 where contains(*,' "my" or "name is" ') --或者的关系 还有'and not'  'and'   

还有临近词和权重  我就不多说了 2.freetext:模糊匹配(你输入swim可以匹配出swam)与contains语法相同 3.containstable 此函数返回一个表 此表包含两个列 一个是key(就是主健啦)  一个是rank(返回的行与搜索结果的匹配程度,越大越精确)

代码语言:javascript
复制
select  title from mytable p 
join containstable(mytable, title , 'xland') ct
on p.id  = ct.[key]

4.freetexttable与containstable类似 附件:使用旧式语法创建全文索引的例子

代码语言:javascript
复制
use xland
go
--检查数据库pubs是否支持全文索引,如果不支持 
--则使用sp_fulltext_database 打开该功能 
if(select databaseproperty('xland','isfulltextenabled'))=0 
execute sp_fulltext_database 'enable' 
--建立全文目录FT_xland 
execute sp_fulltext_catalog 'FT_xland','create'
--为mytable表建立全文索引数据元 
execute sp_fulltext_table 'mytable','create','FT_xland','PK_mytable'--最后一个是主键名 
--设置全文索引列名 
execute sp_fulltext_column 'mytable','title','add' 
--建立全文索引 
--activate,是激活表的全文检索能力,也就是在全文目录中注册该表 
execute sp_fulltext_table 'mytable','activate' 
--填充全文索引目录 
execute sp_fulltext_catalog 'FT_xland','start_full' 
go 
--检查全文目录填充情况 
While fulltextcatalogproperty('FT_xland','populateStatus')<>0 
begin 
--如果全文目录正处于填充状态,则等待30秒后再检测一次 
waitfor delay '0:0:30' 
end 
--全文目录填充完成后,即可使用全文目录检索 
select * from mytable where CONTAINS(title,'xland')
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2009-01-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档