全文目录和全文索引的关系
1.全文索引存储关于重要词和这些词在特定列中的位置的信息。全文查询利用这些信息,可快速搜索包含具体某个词或一组词的行。
2.全文索引包含在全文目录中。
3.每个数据库可以包含一个或多个全文目录。一个目录只能属于一个数据库,而每个目录可以包含一个或多个表的全文索引。一个表只能有一个全文索引,因此每个有全文索引的表只属于一个全文目录。
4.全文目录和索引不存储在它们所属的数据库中。目录和索引由 Microsoft 搜索服务分开管理。
5.全文索引必须在基表上定义,而不能在视图、系统表或临时表上定义。 全文索引的定义包括:
- 能唯一标识表中各行的列(主键或候选键),而且不允许 NULL 值。
- 索引所覆盖的一个或多个字符串列。
6.全文索引由键值填充。每个键的项提供与该键相关联的重要词(干扰词或终止词除外)、它们所在的列和它们在列中的位置等有关信息。
格式化文本字符串(如 Microsoft® Word™ 文档文件或 HTML 文件)不能存储在字符串或 Unicode 列中,因为这些文件中的许多字节包含不构成有效字符的数据结构。数据库应用程序可能仍需要访问这些数据并对其应用全文检索。因为 image 列并不要求每一字节都构成一个有效字符,所以许多站点将这类数据存储在 image 列中。SQL Server 2000 引入了对存储在 image 列中的这些类型的数据执行全文检索的能力。SQL Server 2000 提供筛选,可从 Microsoft Office™ 文件(.doc、.xls 和 .ppt 文件)、文本文件(.txt 文件)及 HTML 文件(.htm 文件)中析取文本化数据。设计表时除包括保存数据的 image 列外,还需包括绑定列来保存存储在 image 列中的数据格式的文件扩展名。可以创建引用 image 列和绑定列的全文索引,以便在存储于 image 列中的文本化信息上启用全文检索。SQL Server 2000 全文检索引擎使用绑定列中的文件扩展名信息,选择从列中析取文本化数据的合适的筛选。
7.全文索引是用于执行两个 Transact-SQL 谓词的组件,以便根据全文检索条件对行进行测试:
- CONTAINS
- FREETEXT
8.Transact-SQL 还包含两个返回符合全文检索条件的行集的函数:
- CONTAINSTABLE
- FREETEXTTABLE
9.SQL Server 在内部将搜索条件发送给 Microsoft 搜索服务。Microsoft 搜索服务查找所有符合全文检索条件的键并将它们返回给 SQL Server。SQL Server 随后使用键的列表来确定表中要处理的行。
(本文非原创,原文为:http://www.hur.cn/special/sql2000/setupsql/8_ar_da_80tv.htm)