sql全文索引创建与查询实例

建立全文索引

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

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

database);;

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

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

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

column);;

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

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

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

use test //打开数据库

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

 代码如下 复制代码

execute sp_fulltext_database ‘enable’

//建立全文检索目录ft_test

 代码如下 复制代码

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.databases
USE NorthWind
--2.创建全文目录

 代码如下 复制代码
CREATE FULLTEXT CATALOG [employee_fulltext]WITH ACCENT_SENSITIVITY = OFF
AS 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])
go
ALTER FULLTEXT INDEX ON [dbo].[Employees] ADD ([LastName])
go
ALTER FULLTEXT INDEX ON [dbo].[Employees] ADD ([FirstName])
go

--5. 设置为可用

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

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’)

时间: 2024-09-19 20:30:51

sql全文索引创建与查询实例的相关文章

sql join on联合查询实例

sql join on联合查询实例 sql join - 使用 join 除了上面的方法,我们也可以使用关键词 join 来从两个表中获取数据. 如果我们希望列出所有人的定购,可以使用下面的 select 语句: select persons.lastname, persons.firstname, orders.orderno from persons inner join orders on persons.id_p = orders.id_p 实例二 select title, artis

asp.net C#中 sql存储过程创建与应用实例

什么叫存储过程呢? 将常用的或很复杂的工作,预先用sql语句写好并用一个指定的名称存储起来, 那么以后要叫数据库教程提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令.     存储过程的优点     1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般sql语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度.     2.当对数据库进行复杂操作时(如对多个表进行update,insert,query,delete时),可将此

SQL多表连接查询实例分析(详细图文)_MsSql

新建两张表: 表1:student  截图如下: 表2:course  截图如下: (此时这样建表只是为了演示连接SQL语句,当然实际开发中我们不会这样建表,实际开发中这两个表会有自己不同的主键.) 一.外连接外连接可分为:左连接.右连接.完全外连接. 1.左连接  left join 或 left outer join SQL语句:select * from student left join course on student.ID=course.ID执行结果: 左外连接包含left joi

SQL多表连接查询实例分析(详细图文)

新建两张表: 表1:student  截图如下: 表2:course  截图如下: (此时这样建表只是为了演示连接SQL语句,当然实际开发中我们不会这样建表,实际开发中这两个表会有自己不同的主键.) 一.外连接 外连接可分为:左连接.右连接.完全外连接. 1.左连接  left join 或 left outer join SQL语句:select * from student left join course on student.ID=course.ID 执行结果: 左外连接包含left j

看实例学VFP:用sql命令创建表

本文是一个在vfp中使用sql命令创建表的实例.用sql命令创建表结构的格式如下: create table 表名 (字段名1 类型(宽度[,小数位]),字段名2 类型(宽度[,小数位]),-) 在看实例学VFP:示例数据库一文中已经给出了"网站信息表"的表结构如下表: 字段名 类型 宽度 编号 字符型 5 网站名称 字符型 12 网站网址 字符型 24 那么我要创建相同的表结构并且表名为"网站信息表2"的sql命令如下: create table 网站信息表2 (

sql 全文索引入门与实例

全文索引为在字符串数据中进行复杂的词搜索提供有效支持.全文索引存储关于重要词和这些词在特定列中的位置的信息.全文查询利用这些信息,可快速搜索包含具体某个词或一组词的行.     全文索引包含在全文目录中.每个数据库教程可以包含一个或多个全文目录.一个目录不能属于多个数据库,而每个目录可以包含一个或多个表的全文索引.一个表只能有一个全文索引,因此每个有全文索引的表只属于一个全文目录.     全文目录和索引不存储在它们所属的数据库中.目录和索引由 Microsoft 搜索服务分开管理.     全

sql 查询指定日期时间记录sql语句与查询实例

sql 查询指定日期时间记录sql语句与查询实例  首先创建一个表abc结构如下    CREATE TABLE `cc`.`loup` (  `id` INT( 4 ) NOT NULL AUTO_INCREMENT ,  `datetimes` INT( 4 ) NULL ,  `ipaddress` VARCHAR( 20 ) NULL ,  PRIMARY KEY ( `id` )  ) ENGINE = MYISAM    再批量插入数据    INSERT INTO `loup` (

SQL子查询实例

  SQL子查询实例介绍: 子查询是在一个查询内的查询.子查询的结果被DBMS使用来决定包含这个子查询的高级查询的结果.在子查询的最简单的形式中,子查询呈现在另一条SQL语句的WHERE或HAVING子局内. 列出其销售目标超过各个销售人员定额综合的销售点. SELECT CITY FROM OFFICES WHERE TARGET > (SELECT SUM(QUOTA) FROM SALESREPS WHERE REP_OFFICES = OFFICE) SQL子查询一般作为WHERE子句或

SQL Server创建复合索引时,复合索引列顺序对查询的性能影响

原文:SQL Server创建复合索引时,复合索引列顺序对查询的性能影响    说说复合索引 写索引的博客太多了,一直不想动手写,有一下两个原因: 一是觉得有炒剩饭的嫌疑,有兄弟曾说:索引吗,只要在查询条件上建索引就行了,真的可以这么暴力吗? 二来觉得,索引是个非常大的话题,很难概括出所有的情况,你不整出点新意来,倒是有抄袭照搬的嫌疑 既然写了,就写一点稍微不一样的东西出来, 好了,废话打住,开搞   搭建测试环境: 创建一张表,模拟实际业务中的一个表,往里面填入数据, 时间字段上,相对按照时间