查看和更改 Full-Text 索引的属性
在 Management Studio 中查看或更改全文索引的属性
在对象资源管理器中,展开服务器。
展开 数据库,然后展开包含全文索引的数据库。
展开 表。
右键单击定义全文索引的表,选择 Full-Text 索引,然后在 Full-Text 索引 上下文菜单上单击“ 属性”。 这将打开 “全文索引属性 ”对话框。
在 “选择页面 ”窗格中,可以选择以下任一页面:
页 DESCRIPTION 常规 显示全文索引的基本属性。 其中包括多个可修改的属性和许多不可更改的属性,例如数据库名称、表名和全文键列的名称。 可修改的属性包括:
Full-Text 索引停用词表
已启用Full-Text 索引
更改跟踪
搜索属性列表
有关详细信息,请参阅 Full-Text 索引属性(常规页)。列 显示可用于全文索引的表列。 所选的列或多个列已建立全文索引。 可以根据需要在全文索引中选择任意数量的可用列。 有关详细信息,请参阅 Full-Text 索引属性(列页)。 计划 使用此页面创建或管理 SQL Server 代理作业的计划,该作业用于启动全文索引的增量表填充。 有关详细信息,请参阅 填充全文索引。
**重要** 退出 “Full-Text 索引属性 ”对话框后,任何新创建的计划都与 SQL Server 代理作业( database_name启动增量表填充)相关联。table_name)。单击确定以保存更改并退出全文索引属性对话框。
查看已建立索引的表和列的属性
可以使用多个 Transact-SQL 函数(如 OBJECTPROPERTYEX)来获取各种全文索引属性的值。 此信息可用于管理和排查全文搜索问题。
下表列出了与索引表和列及其相关 Transact-SQL 函数相关的全文属性。
| 资产 | DESCRIPTION | 功能 |
|---|---|---|
FullTextTypeColumn |
表中保存列的文档类型信息的 TYPE COLUMN。 | COLUMNPROPERTY |
IsFulltextIndexed |
是否为列启用了全文索引。 | COLUMNPROPERTY |
IsFulltextKey |
索引是否为表的全文键。 | INDEXPROPERTY |
| 表全文背景更新索引启用 | 表是否具备全文后台更新索引功能。 | OBJECTPROPERTYEX |
TableFulltextCatalogId |
表的全文索引数据所在的全文目录 ID。 | OBJECTPROPERTYEX |
TableFulltextChangeTrackingOn |
表是否已启用全文更改跟踪。 | OBJECTPROPERTYEX |
TableFulltextDocsProcessed |
自全文索引开始以来处理的行数。 | OBJECTPROPERTYEX |
| TableFulltextFailCount | 搜索未编制索引的Full-Text行数。 | OBJECTPROPERTYEX |
| TableFulltextItemCount | 已成功为全文编制索引的行数。 | OBJECTPROPERTYEX |
TableFulltextKeyColumn |
全文唯一键列的列 ID。 | OBJECTPROPERTYEX |
TableFullTextMergeStatus |
具有全文索引的表当前是否正在合并。 | OBJECTPROPERTYEX |
| TableFulltextPendingChanges | 待处理的更改跟踪挂起条目数。 | OBJECTPROPERTYEX |
TableFulltextPopulateStatus |
全文表的填充状态。 | OBJECTPROPERTYEX |
TableHasActiveFulltextIndex |
表是否具有激活的全文索引。 | OBJECTPROPERTYEX |
获取有关 Full-Text 键列的信息
通常,CONTAINSTABLE 或 FREETEXTTABLE 行集值函数的结果需要与基表联接。 在这种情况下,需要知道唯一键列名称。 可以查询给定的唯一索引是否用作全文键,并且可以获取全文键列的标识符。
查询给定的唯一索引是否用作全文键列
使用 SELECT 语句调用 INDEXPROPERTY 函数。 在函数调用中使用 OBJECT_ID 函数将表的名称(table_name)转换为表 ID,指定表的唯一索引的名称,并指定
IsFulltextKey索引属性,如下所示:SELECT INDEXPROPERTY( OBJECT_ID('table_name'), 'index_name', 'IsFulltextKey' );如果索引用于强制实施全文键列的唯一性,则此语句返回 1;否则返回 0。
示例
以下示例查询索引是否 PK_Document_DocumentID 用于强制实施全文键列的唯一性,如下所示:
USE AdventureWorks
GO
SELECT INDEXPROPERTY ( OBJECT_ID('Production.Document'), 'PK_Document_DocumentID', 'IsFulltextKey' )
如果 PK_Document_DocumentID 索引用于强制实施全文键列的唯一性,则此示例返回 1。 否则,它将返回 0 或 NULL。 NULL 表示你使用的是无效的索引名称,索引名称与表不对应,表不存在,依此类推。
查找全文键列的标识符
每个启用全文的表都有一个列,该列用于对表( 唯一**键列)强制实施唯一行。 从 OBJECTPROPERTYEX 函数获取的
TableFulltextKeyColumn属性包含唯一键列的列 ID。若要获取此标识符,可以使用 SELECT 语句调用 OBJECTPROPERTYEX 函数。 使用 OBJECT_ID 函数将表的名称(table_name)转换为表 ID 并指定
TableFulltextKeyColumn属性,如下所示:SELECT OBJECTPROPERTYEX(OBJECT_ID( 'table_name'), 'TableFulltextKeyColumn' ) AS 'Column Identifier';
示例
以下示例返回全文键列或 NULL 的标识符。 NULL 表示你使用的是无效的索引名称,索引名称与表不对应,表不存在,等等。
USE AdventureWorks;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID('Production.Document'), 'TableFulltextKeyColumn');
GO
以下示例演示如何使用唯一键列的标识符来获取列的名称。
USE AdventureWorks;
GO
DECLARE @key_column sysname
SET @key_column = Col_Name(Object_Id('Production.Document'),
ObjectProperty(Object_id('Production.Document'),
'TableFulltextKeyColumn')
)
SELECT @key_column AS 'Unique Key Column';
GO
此示例返回一个名为 Unique Key Column 的结果集列,该列显示了一行,其中包含 Document 表中唯一键列 DocumentID 的名称。 请注意,如果此查询包含无效的索引名称,索引名称与表不对应,表不存在,依此类推,它将返回 NULL。
对用于 Full-Text 索引的表进行禁用或重新启用操作
在 SQL Server 中,默认情况下,所有用户创建的数据库都已启用全文。 此外,在创建全文索引并将列添加到索引后,会自动为单个表启用全文索引。 当表的全文索引中最后一列被删除时,该表将自动禁用全文索引功能。
在具有全文索引的表中,可以使用 SQL Server Management Studio 手动禁用或重新启用表进行全文索引。
为全文索引启用表
展开服务器组,展开数据库,然后展开包含要启用全文索引的表的数据库。
展开 表,然后右键单击要禁用或重新启用全文索引的表。
选择 Full-Text 索引,然后单击“ 禁用 Full-Text 索引 ”或“ 启用 Full-Text 索引”。
从表中删除 Full-Text 索引
从表中删除全文索引
在对象资源管理器中,右键单击包含要删除的全文索引的表。
选择 “删除 Full-Text 索引。
出现提示时,单击“ 确定 ”以确认要删除全文索引。