3.在全文检索目录中注册需要全文索引的表(sp

  • 栏目:数据 时间:2020-05-15 12:01
<返回列表

本文章来告诉你如何创建全文索引以及建立后的全文索引的查询操作,有需要了解可以看看。

以前只是听说,并没有试过,今天算是个开头.

建立全文索引

--创建一个唯一索引
CREATE UNIQUE INDEX ix_tUser_vUserName ON [tUser]
(
 vUserName ASC
)
GO

在进行全文检索之前,必须先建立和填充数据库全文索引。为了支持全文索引操作,SQL Server 7.0新增了一些存储过程和Transact-SQL语句。使用这些存储过程创建全文索引的具体步骤如下:

--打开数据库全文索引的支持
execute sp_fulltext_database 'enable'
GO

  1. 启动数据库的全文处理功能(sp_fulltext_

--建立全文目录ft_UserName
execute sp_fulltext_catalog 'ft_UserName', 'create'
GO

database);;

--为titles表建立全文索引数据元,IX_tUser_vUserName是唯一索引,可由sp_help IX_tUser_vUserName得知
execute sp_fulltext_table 'tUser','create', 'ft_UserName', 'IX_韦德体育 ,tUser_vUserName'
GO

  1. 建立全文检索目录(sp_fulltext_catalog);

--设置全文索引列名
exec sp_fulltext_column 'tUser', 'vUserName', 'add'
GO

3.在全文检索目录中注册需要全文索引的表(sp_fulltext_table);

--建立全文索引
exec sp_fulltext_table 'tUser', 'activate'
GO

  1. 指出表中需要全文检索的列名(sp_fulltext_

--填充全文索引目录
exec sp_fulltext_catalog 'ft_UserName', 'start_full'
GO

column);;

--使用contains和freetext

  1. 为表创建全文索引(sp_fulltext_table);;

  2. 填充全文检索目录(sp_fulltext_catalog)。

SELECT *
FROM [tUser]
WHERE CONTAINS([vUserName], '"wang*"')

下面举例说明如何创建全文索引,在本例中,对Test数据库Book表中Title列和Notes列建立全文索引。

SELECT *
FROM [tUser]
WHERE FREETEXT(*, 'wangzg admin')

use test //打开数据库

--DROP FULLTEXT CATALOG ft_UserName
--DROP FULLTEXT INDEX  ON tuser

//打开全文索引支持,启动SQL Server的全文搜索服务

================================================================================
后续:
没想到上面的存储过程的方式早就过时了,唉,真是误人子弟!

代码如下复制代码

CREATE FULLTEXT CATALOG ftCatalog_elWeb AS DEFAULT;
GO
CREATE FULLTEXT INDEX ON tUser(vUserName) KEY INDEX pk_tUser;
GO

execute sp_fulltext_database enable

ALTER FULLTEXT INDEX ON [dbo].[tUser] add ([vNickName])
GO

//建立全文检索目录ft_test

ALTER FULLTEXT INDEX ON [dbo].[tUser] DROP ([vNickName])
GO

代码如下复制代码

execute sp_fulltext_catalog ft_test, create

为Title列建立全文索引数据元,pk_title为Book表中由主键所建立的唯一索引,这个参数是必需的。

代码如下复制代码

execute sp_fulltext_table book,create, ft_test,pk_title

//设置全文索引列名

代码如下复制代码

execute sp_fulltext_column book, title, add

execute sp_fulltext_column book,notes, add

//建立全文索引

代码如下复制代码

execute sp_fulltext_table book, activate

//填充全文索引目录

代码如下复制代码

execute sp_fulltext_catalog ft_test, start_full

至此,全文索引建立完毕。

其它网友参考内容--1. 查看数据库northwind 是否启用 全文索引 SELECT * FROM sys.databasesUSE NorthWind--2.创建全文目录

代码如下复制代码 CREATE FULLTEXT CATALOG [employee_fulltext]WITH ACCENT_SENSITIVITY = OFFAS DEFAULT

--3. 指定唯一索引

代码如下复制代码 CREATE FULLTEXT INDEX ON [dbo].[Employees] KEY INDEX [PK_Employees] ON ([employee_fulltext]) WITH (CHANGE_TRACKING AUTO)

--4. 添加全文索引列

代码如下复制代码 ALTER FULLTEXT INDEX ON [dbo].[Employees] ADD ([Address])goALTER FULLTEXT INDEX ON [dbo].[Employees] ADD ([LastName])goALTER FULLTEXT INDEX ON [dbo].[Employees] ADD ([FirstName])go

--5. 设置为可用

代码如下复制代码 ALTER FULLTEXT INDEX ON [dbo].[Employees] ENABLEgo

SQL Server 2000提供的全文检索语句主要有CONTAINS和FREETEXT。CONTAINS语句的功能是在表的所有列或指定列中搜索:一个字或短语;一个字或短语的前缀;与一个字相近的另一个字;一个字的派生字;一个重复出现的字。

CONTAINS语句的语法格式为:

代码如下复制代码

CONTAINS({column | *}), contains_search

_condition )

其中,column是搜索列,使用*时说明对表中所有全文索引列进行搜索。Contains_search_

condition 说明CONTAINS语句的搜索内容,其语法格式为:

代码如下复制代码

{simple_term|prefix_term|proximity_term|generation_term|weighted_term}[{{AND|AND NOT|OR}contains_search_condition}] [...n]

下面就simple_term和prefix_term参数做简要说明:

simple_term是CONTAINS语句所搜索的单字或短语,当搜索的是一个短语时,必须使用双引号作为定界符。其格式为:

{word| phrase}

prefix_term说明CONTAINS语句所搜索的字或短语前缀,其格式为:

{word* | phrase*}

例如,下面语句检索Book表的Title列和Notes列中包含database或computer字符串的图书名称及其注释信息:

代码如下复制代码

select title, notes

from book

where contains(tilte, database) or contains(notes,database)

or contains(title,computer) or contains(notes,computer)

FREETEXT语句的功能是在一个表的所有列或指定列中搜索一个自由文本格式的字符串,并返回与该字符串匹配的数据行。所以,FREETEXT语句所执行的功能又称做自由式全文查询。

FREETEXT语句的语法格式为:FREETEXT({column | * },freetext_string)

其中,column是被搜索列,使用*时说明对表中的所有全文索引列进行搜索。Freetext_string参数指出所搜索的自由文本格式字符串。

例如,下面语句使用FREETEXT语句搜索Book表中包含Successful Life字符串的数据行:

代码如下复制代码

select title, notes

from book

where freetext(*,Successful Life)

上一篇:分割再成批插入 下一篇:有时需要查询出某个字段不重复的记录,列函数对于 group by

更多阅读

有时需要查询出某个字段不重复的记录,

数据 2020-05-15
可按照在 GROUP BY子句中定义的组对行进行分组。以其最简单的形式,组由称为分组列的列组成...
查看全文

分割再成批插入

数据 2020-05-15
分割再成批插入 原文地址:SQL字符串数组操作 文章出处:DIY部落(http://www.diybl.com/course/7_data...
查看全文

3.在全文检索目录中注册需要全文索引的

数据 2020-05-15
本文章来告诉你如何创建全文索引以及建立后的全文索引的查询操作,有需要了解可以看看。...
查看全文

友情链接: 网站地图

Copyright © 2015-2019 http://www.koi-bumi.com. 韦德体育有限公司 版权所有