全文索引

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

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

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

SELECT  databasePropertyex( ' xland ' , ' isfulltextenabled ' )
返回0为未开启,返回1为已开启
2.激活和禁止全文索引
禁用全文索引一定要注意,已经存在的全文目录,数据表同该目录的任何关联信息都会被删除
exec  sp_fulltext_database  @action   =   ' disable '
'enable'为激活
3.创建全文索引
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可改为简体中文
可通过
select  name alias  from  master..syslanguages
查询系统中支持的语言
修改和删除全文索引
drop  fulltext  index   on  dbo.mytable

三.全文目录的相关操作
1.创建全文目录
创建全文目录的时候,全文索引一定要为enable状态
全文目录存放的路径一定要有效
use  xland
go
exec  sp_fulltext_database  @action   =   ' enable '
go
create  fulltext catalog maincatalog
in  path  ' c:\fulltext '
更改和删除分别是alter和drop
drop  fulltext catalog maincatalog
与其他的没有太多区别
2.填充全文目录
这是个后台的过程,表大的话虽然提示成功了,但是后台还在填充
alter  fulltext  index   on  dbo.mytable
start 
full  population

use  xland
go
exec  sp_fulltext_table  @tabname   =   ' dbo.mytable ' ,
@action   =   ' start_full '
3.查看结果
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(返回的行与搜索结果的匹配程度,越大越精确)
select   title  from  mytable p 
join   containstable (mytable, title ,  ' xland ' ) ct
on  p.id   =  ct. [ key ]  
4.freetexttable与containstable类似


附件:使用旧式语法创建全文索引的例子
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 '
目录
相关文章
|
SQL 自然语言处理 关系型数据库
MySQL索引之全文索引(FULLTEXT)
MySQL索引之全文索引(FULLTEXT) MySQL创建全文索引 使用索引时数据库性能优化的必备技能之一。
6218 0
|
9月前
|
自然语言处理 算法 UED
全文搜索
全文搜索树设计思路
84 0
|
10月前
|
存储 SQL 缓存
MyISAM索引和InnoDB索引
MyISAM索引和InnoDB索引
|
10月前
|
存储 Oracle 关系型数据库
主键索引是聚集索引还是非聚集索引
在聚簇索引中,主键索引的叶子节点存储的就是数据行本身,因此主键索引也被称为聚簇索引。在这种情况下,主键索引的物理顺序与数据行的物理顺序是一致的,这样可以提高查询性能和范围查询的效率。
73 0
|
11月前
|
SQL 存储 自然语言处理
表索引——全文索引
表索引——全文索引
|
存储 关系型数据库 MySQL
FAQ系列 | MySQL索引之主键索引
FAQ系列 | MySQL索引之主键索引
119 0
|
存储 算法 关系型数据库
①MySQL的索引(普通索引、唯一索引,主键索引、组合索引、全文索引、空间索引)相关操作
MySQL的索引(普通索引、唯一索引,主键索引、组合索引、全文索引、空间索引)相关操作
112 0
①MySQL的索引(普通索引、唯一索引,主键索引、组合索引、全文索引、空间索引)相关操作
|
存储 SQL 自然语言处理
mysql索引(八)全文索引
全文索引(FULLTEXT ):可用于 MyISAM 表,mysql5.6之后也可用于innodb表, 用于在一篇文章中,检索文本信息的, 针对较大的数据,生成全文索引很耗时和空间。
408 0
mysql索引(八)全文索引
|
存储 SQL 关系型数据库
mysql索引(六)主键索引
主键索引(PRIMARY):它是一种特殊的唯一索引,不允许有空值。 主键索引,简称主键,原文是PRIMARY KEY,由一个或多个列组成,用于唯一性标识数据表中的某一条记录。一个表可以没有主键,但最多只能有一个主键,并且主键值不能包含NULL。
1284 0
mysql索引(六)主键索引
|
存储 自然语言处理 数据库
5分钟了解lucene全文索引
本文通俗地介绍了Lucene全文检索的内容及工作原理,以及索引的结构,旨在让以前未了解过Lucene的读者在能在短时间内对Lucene有简单认知,未介绍具体代码,读完本文可知道Lucene是什么,有哪些具体应用,我们一直说的索引是什么。