一、如何在SQL中启用全文检索功能
1、证全文检索服务是否安装
通过储存过程FULLTEXTSERVICEPROPERTY(返回有关全文服务级别属性的信息)来验证搜索服务(全文组件)是否安装。如Select fulltextserviceproperty (''IsFullTextInstalled,):返回1表示已安装全文组件;返回0表示未安装全文组件;返回Null表示输入无效或发生错误。
2、启动全文检索服务(MircoSoft Search)
3、打开数据库全文索引的支持
为全文索引启用数据库:
Use Northwind
Exec sp_fulltext_database ''enable,
从数据库中删除所有目录:
Use Northwind
Exec sp_fulltext_database ''disable,
二、建立全文目录
1、创建全文目录
Use Northwind
Exec sp_fulltext_catalog ''ft_ Catalog '', ''create''
2、重建全文目录
Use Northwind
Exec sp_fulltext_catalog ''ft_ Catalog '', '' rebulid''
3、启动全文目录的填充
Use Northwind
Exec sp_fulltext_catalog ''ft_ Catalog '', ''start_full''
4、停止全文目录的填充
Use Northwind
Exec sp_fulltext_catalog ''ft_ Catalog '', ''stop''
5、删除全文目录
Use Northwind
PK_Products
Exec sp_fulltext_catalog ''ft_ Catalog '', ''drop''
三、为表建立全文索引数据元
1、建立的唯一索引
Use Northwind
Exec sp_fulltext_table ''Products'',''create'', ''ft_ Catalog'', '' PK_Products ''
2、设置全文索引列名
Use Northwind
Exec sp_fulltext_table ''Products'',''create'', ''ft_ Catalog'', '' PK_Products ''
3、设置全文索引列名
Use Northwind
Exec sp_fulltext_column '' Products '', ProductName'', ''add''
Go
Exec sp_fulltext_column '' Products '', QuantityPerUnit'', ''add''
Go
4、激活全文索引
Use Northwind
Exec sp_fulltext_table ''Products'',''activate
5、填充全文索引目录
Use Northwind
Exec sp_fulltext_catalog ''ft_ Catalog '', ''start_full''
四、使用Transact-SQL进行全文检索,我们使用CONTAINS、FREETEXT等谓词
1、检索ProductName中,即包含b又包含c的所有列
Use Northwind
SELECT *
FROM Products
WHERE CONTAINS(ProductName, ''"c*" and "b*" '')
2、检索ProductName中,即包含chai chang tofu之一的所有列
Use Northwind
SELECT *
FROM Products
WHERE FREETEXT(ProductName, ''chai chang tofu '')
五、全文查询有关的系统存储过程
(1)启动数据库的全文处理功能(sp_fulltext_datebase);
(2)建立全文目录(sp_fulltext_catalog);
(3)在全文目录中注册需要全文索引的表(sp_fulltext_table);
(4)指出表中需要全文检索的列名(sp_fulltext_column)
(5)为表创建全文索引(sp_fulltext_table);
(6)填充全文索引(sp_fulltext_catalog)。
全文查询支持
Microsoft® SQL Server™ 2000 在接收带全文构造的 Transact-SQL 语句时,使用全文提供程序从 Microsoft 搜索服务检索所需信息。全文构造是 CONTAINS 或 FREETEXT 谓词,或者是 CONTAINSTABLE 或 FREETEXTTABLE 行集函数。如果不知道包含搜索条件的列,全文构造可以在全文索引中引用多列。该进程的流程如下图所示。
这一进程涉及的步骤包括:
应用程序给 SQL Server 实例发送带全文构造的 Transact-SQL 语句。
SQL Server 关系引擎通过查询系统表验证全文构造,确定全文索引是否覆盖列引用。关系引擎将每个 SQL 语句简化为一系列行集操作,并使用 OLE DB 将这些操作传递给基础组件,通常是存储引擎。关系引擎通过全文提供程序而不是存储引擎,将任何全文构造转换成对行集的请求。请求的行集是满足搜索条件和等级的键集,而这个等级表示每个键的数据满足搜索条件的程度。向全文提供程序发送的行集请求命令包括全文检索条件。
全文提供程序