ALTER FULLTEXT INDEX (Transact-SQL)
更新日期: 2006 年 12 月 12 日
更改全文索引的属性。
语法
ALTER FULLTEXT INDEX ON table_name
{ ENABLE
| DISABLE
| SET CHANGE_TRACKING { MANUAL | AUTO | OFF }
| ADD ( column_name
[ TYPE COLUMN type_column_name ]
[ LANGUAGE language_term ] [,...n] )
[ WITH NO POPULATION ]
| DROP ( column_name [,...n] )
[WITH NO POPULATION ]
| START { FULL | INCREMENTAL | UPDATE } POPULATION
| { STOP | PAUSE | RESUME } POPULATION
}
参数
- table_name
包含全文索引中的一列或多列的表的名称。可以选择指定数据库和表所有者名称。
ENABLE | DISABLE
通知 Microsoft SQL Server 是否收集 table_name 的全文索引数据。ENABLE 激活全文索引;DISABLE 关闭全文索引。如果禁用全文索引,则全文索引元数据将保留在系统表中。禁用全文索引时,如果 CHANGE_TRACKING 处于启用状态(自动或手动更新),则索引状态将冻结,任何正在进行的爬网将停止,并且不会跟踪对表数据进行的新更改,也不会将这些更改传播到索引。可以使用 ENABLE 重新激活对 table_name 的全文索引。
SET CHANGE_TRACKING {MANUAL | AUTO | OFF}
指定 SQL Server 是否维护一份对索引数据(位于全文目录中)的全部更改的列表。通过 WRITETEXT 和 UPDATETEXT 所做的数据更改不会反映到全文索引中,也不能使用更改跟踪方法拾取。若要修改全文索引的 CHANGE_TRACKING 状态,不能将全文索引表所在的 FILEGROUP 设置为 OFFLINE 或 READONLY。否则,此命令将失败,且 SQL Server 将返回错误。
- MANUAL
指定是使用 SQL Server 代理按计划传播更改跟踪日志还是由用户手动进行传播。
- AUTO
指定在关联表中修改数据时,SQL Server 将自动更新全文索引。默认值为 AUTO。
- OFF
指定 SQL Server 将不保存对索引数据的更改的列表。
ADD | DROP column_name
指定要添加到全文索引或从全文索引中删除的列。列的类型必须为 char、varchar、nchar、nvarchar、text、ntext、image、xml 或 varbinary(max)。仅对先前为全文索引启用的列使用 DROP 子句。
TYPE COLUMN 和 LANGUAGE 与 ADD 子句一起使用,以设置 column_name 的属性。添加列后,必须重新填充该表的全文索引,才能使针对此列进行的全文查询生效。
除非指定了 WITH NO POPULATION,否则 SQL Server 会在向全文索引添加列或从其中删除列之后自动启动一个完全填充。
TYPE COLUMN type_column_name
table_name 中列的名称,用于存储 column_name 的文档类型。仅当 column_name 列的类型为 varbinary(max) 或 image 时,才指定 type_column_nameTYPE COLUMN 的数据类型可以是 char、nchar、varchar 或 nvarchar。有关全文支持文件的格式以及 varbinary(max) 列中存储的索引数据的详细信息,请参阅全文搜索筛选器。
LANGUAGE language_term
存储在 column_name 中的数据的语言。language_term 为可选参数,可以将其指定为与语言区域设置标识符 (LCID) 对应的字符串、整数或十六进制值。如果指定了 language_term,则它表示的语言将应用于搜索条件的所有元素。如果未指定值,则使用 SQL Server 实例的默认全文语言。
使用 sp_configure 存储过程访问有关 SQL Server 实例的默认全文语言的信息。有关详细信息,请参阅default full-text language 选项。
如果指定为字符串,则 language_term 对应于 syslanguages 系统表中 alias 列的值。字符串必须用单引号引起,如 'language_term'。如果指定为整数,则 language_term 即为标识该语言的实际 LCID。如果指定为十六进制值,则 language_term 将以 0x 开头,后跟 LCID 的十六进制值。十六进制值不能超过八位(包括前导零在内)。
如果该值是双字节字符集 (DBCS) 格式,则 SQL Server 会将其转换为 Unicode 格式。
必须为指定为 language_term 的语言启用断字符和词干分析器等资源。如果此类资源不支持指定的语言,则 SQL Server 将返回错误。
对于包含多种语言的文本数据的非 BLOB 和非 XML 列,或者列中所存储文本的语言未知时,请使用非特定 (0x0) 语言资源。对于在 XML 或 BLOB 类型的列中存储的文档,将在进行索引时使用文档内的语言编码。例如,在 XML 列中,XML 文档中的 xml:lang 属性将标识语言。在查询时,除非将 language_term 指定为全文查询的一部分,否则将使用以前在 language_term 中指定的值作为全文查询的默认语言。
- [ ,...n]
指示可以为 ADD 或 DROP 子句指定多个列。指定多个列时,请使用逗号分隔这些列。
WITH NO POPULATION
指定在 ADD 或 DROP 列操作之后不填充全文索引。仅当用户执行 START...POPULATION 命令时,才会填充该索引。如果启用了 CHANGE_TRACKING 并指定了 WITH NO POPULATION,SQL Server 将返回一个错误。如果启用了 CHANGE_TRACKING,但未指定 WITH NO POPULATION,SQL Server 将在创建索引后对此索引执行完全填充。
仅当 CHANGE_TRACKING 为 OFF 时,才能使用 NO POPULATION 选项。如果指定了 NO POPULATION,则 SQL Server 在创建索引后不会对其进行填充。仅当用户指定了 ALTER FULLTEXT INDEX...START POPULATION 命令后,才填充此索引。如果未指定 NO POPULATION,SQL Server 将在创建索引后填充此索引。
- START {FULL|INCREMENTAL|UPDATE} POPULATION
通知 SQL Server 开始填充 table_name 的全文索引。如果全文索引填充已在执行,SQL Server 将返回一个警告,并且不会启动新的填充。
-
- FULL
指定检索表中的每一行以进行全文索引,即使已对这些行进行了索引。
- INCREMENTAL
指定仅检索自上次填充以来修改的行以进行全文索引。仅当表包含一个类型为 timestamp 的列时,才能应用 INCREMENTAL。如果全文目录中的表不包含 timestamp 类型的列,则将对该表进行完全填充。
- UPDATE
指定对自上次更新更改跟踪索引以来的所有插入、更新或删除进行处理。必须对表启用更改跟踪填充,但不应打开后台更新索引或自动更改跟踪。
- FULL
{STOP | PAUSE | RESUME } POPULATION
停止或暂停正在进行的任何填充;或者停止或恢复任何暂停的填充。STOP POPULATION 不会停止自动更改跟踪或后台更新索引。若要停止更改跟踪,请使用 SET CHANGE_TRACKING OFF。
PAUSE POPULATION 和 RESUME POPULATION 只能用于完全填充。它们与其他填充类型无关,因为其他填充从爬网停止的位置恢复爬网。
备注
当对 xml 数据类型的数据实例进行索引以进行全文搜索时,不对属性和元素名进行索引,且无法查询;但可以在每个实例中对元素值进行索引和查询。支持包含多种语言并且格式正确的 XML 文档和片段。
权限
用户必须对表或视图具有 ALTER 权限,或者是 sysadmin 固定服务器角色的成员,或者是 db_ddladmin 或 db_owner 固定数据库角色的成员。
示例
以下示例修改 AdventureWorks
数据库的 JobCandidate
表中的全文索引。
USE AdventureWorks;
GO
ALTER FULLTEXT INDEX ON HumanResources.JobCandidate ENABLE;
GO
请参阅
参考
CREATE FULLTEXT INDEX (Transact-SQL)
DROP FULLTEXT INDEX (Transact-SQL)
其他资源
帮助和信息
更改历史记录
发布日期 | 历史记录 |
---|---|
2006 年 12 月 12 日 |
|