管理 Full-Text 索引

查看和更改 Full-Text 索引的属性

在 Management Studio 中查看或更改全文索引的属性

  1. 在对象资源管理器中,展开服务器。

  2. 展开 数据库,然后展开包含全文索引的数据库。

  3. 展开

  4. 右键单击定义全文索引的表,选择 Full-Text 索引,然后在 Full-Text 索引 上下文菜单上单击“ 属性”。 这将打开 “全文索引属性 ”对话框。

  5. “选择页面 ”窗格中,可以选择以下任一页面:

    DESCRIPTION
    常规 显示全文索引的基本属性。 其中包括多个可修改的属性和许多不可更改的属性,例如数据库名称、表名和全文键列的名称。 可修改的属性包括:

    Full-Text 索引停用词表

    已启用Full-Text 索引

    更改跟踪

    搜索属性列表



    有关详细信息,请参阅 Full-Text 索引属性(常规页)。
    显示可用于全文索引的表列。 所选的列或多个列已建立全文索引。 可以根据需要在全文索引中选择任意数量的可用列。 有关详细信息,请参阅 Full-Text 索引属性(列页)。
    计划 使用此页面创建或管理 SQL Server 代理作业的计划,该作业用于启动全文索引的增量表填充。 有关详细信息,请参阅 填充全文索引

    **重要** 退出 “Full-Text 索引属性 ”对话框后,任何新创建的计划都与 SQL Server 代理作业( database_name启动增量表填充)相关联。table_name)。
  6. 单击确定以保存更改并退出全文索引属性对话框。

查看已建立索引的表和列的属性

可以使用多个 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 行集值函数的结果需要与基表联接。 在这种情况下,需要知道唯一键列名称。 可以查询给定的唯一索引是否用作全文键,并且可以获取全文键列的标识符。

查询给定的唯一索引是否用作全文键列

  1. 使用 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 表示你使用的是无效的索引名称,索引名称与表不对应,表不存在,依此类推。

查找全文键列的标识符

  1. 每个启用全文的表都有一个列,该列用于对表( 唯一**键列)强制实施唯一行。 从 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 手动禁用或重新启用表进行全文索引。

为全文索引启用表

  1. 展开服务器组,展开数据库,然后展开包含要启用全文索引的表的数据库。

  2. 展开 ,然后右键单击要禁用或重新启用全文索引的表。

  3. 选择 Full-Text 索引,然后单击“ 禁用 Full-Text 索引 ”或“ 启用 Full-Text 索引”。

从表中删除 Full-Text 索引

从表中删除全文索引

  1. 在对象资源管理器中,右键单击包含要删除的全文索引的表。

  2. 选择 “删除 Full-Text 索引

  3. 出现提示时,单击“ 确定 ”以确认要删除全文索引。