全文索引

更新日期: 2006 年 7 月 17 日

全文索引是一种特殊类型的基于标记的功能性索引,由 Microsoft SQL Server 全文引擎 (MSFTESQL) 服务创建和维护。创建全文索引的过程与创建其他类型的索引的过程差别很大。MSFTESQL 不是基于某一特定行中存储的值来构造 B 树结构,而是基于要索引的文本中的各个标记来创建倒排、堆积且压缩的索引结构。

在 SQL Server 2005 中,全文索引大小仅受运行 SQL Server 实例的计算机的可用内存资源限制。

创建和维护全文索引的过程称为“索引填充”。Microsoft 支持下列全文索引填充:

  • 完全填充
  • 基于更改跟踪的填充
  • 基于时间戳的增量式填充

完全填充

一般发生在首次填充全文目录或全文索引时。随后可以使用更改跟踪填充或增量填充来维护这些索引。

在全文目录的完全填充过程中,会对该目录涉及的所有表中的所有行创建索引项。如果请求为某个表完全填充,则会对该表中的所有行创建索引项。

如果不希望全文索引在创建(使用 CREATE FULLTEXT INDEX 语句以及 CHANGE TRACKING OFF 选项)后填充,则必须指定 NO POPULATION。只有在用户使用 START FULL、INCREMENTAL 或 UPDATE POPULATION 子句执行 ALTER FULLTEXT INDEX 命令后,才会填充索引。

基于更改跟踪的填充

SQL Server 会记录设置了全文索引的表中修改过的行。这些更改会被传播到全文索引。

可以通过在 CREATE FULLTEXT INDEX 语句中指定 WITH CHANGE_TRACKING 选项来启动更改跟踪。使用更改跟踪时,可以指定如何将更改传播到全文索引。

ms142575.note(zh-cn,SQL.90).gif注意:
更改跟踪填充要求对相应的全文进行了初步填充。

若要自动将更改传播到全文索引,请在 CREATE FULLTEXT INDEX 或 ALTER FULLTEXT INDEX 语句中使用 AUTO 选项。

通过指定 MANUAL 选项,可以按计划手动传播更改或通过使用 SQL Server 代理来传播更改,也可以自行手动传播更改。

ms142575.note(zh-cn,SQL.90).gif注意:
更改跟踪需要少量的开销。如果不希望 SQL Server 跟踪更改,请使用 CHANGE TRACKING OFF 选项。

基于时间戳的增量式填充

增量填充在全文索引中更新上次填充的当时或之后添加、删除或修改的行。增量填充要求索引表必须具有 timestamp 数据类型的列。如果 timestamp 列不存在,则无法执行增量填充。对不含 timestamp 列的表请求增量填充会导致完全填充操作。

如果影响表全文索引的任意元数据自上次填充以来发生了变化,则增量填充请求将作为完全填充来执行。这包括更改任意列、索引或全文索引的定义。

填充结束时,SQL 收集器会记录一个新的 timestamp 值。此值等于 SQL 收集器所观察到的最大 timestamp 值。以后再启动增量填充时,就会使用此值。

请参阅

概念

全文搜索基础

其他资源

CREATE FULLTEXT INDEX (Transact-SQL)
ALTER FULLTEXT INDEX (Transact-SQL)

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

发布日期 历史记录

2006 年 7 月 17 日

新增内容:
  • 添加了说明全文索引大小仅受计算机的可用内存资源限制的内容。