管理全文索引
主题内容
查看或更改全文索引的属性
查看索引表和列的属性
获取有关全文键列的信息
为表禁用和重新启用全文索引
从表中删除全文索引
查看或更改全文索引的属性
在 Management Studio 中查看或更改全文索引的属性
在对象资源管理器中,展开服务器。
展开**“数据库”**,然后展开包含全文索引的数据库。
展开**“表”**。
右键单击对其定义了全文索引的表,选择**“全文索引”,然后在“全文索引”上下文菜单中单击“属性”。 此时将打开“全文索引属性”**对话框。
在**“选择页”**窗格中,您可以选择下列页中的任一页:
第
说明
常规
显示全文索引的基本属性。 这些基本属性包括若干个可修改属性和多个不可更改属性,后者如数据库名称、表名和全文键列的名称。 可修改属性包括:
全文索引非索引字表
全文索引已启用
更改跟踪
搜索属性列表
有关详细信息,请参阅全文索引属性(“常规”页)。
列
显示可用于全文索引的表列。 对于选中的列,均会创建全文索引。 您可以根据需要选择将任意数目的可用列包括在全文索引中。 有关详细信息,请参阅全文索引属性(“列”页)。
计划
使用此页可以创建或管理 SQL Server 代理作业的计划,该作业用于启动全文索引填充的表增量填充。 有关详细信息,请参阅填充全文索引。
重要提示 在退出“全文索引属性”对话框之后,所有新创建的计划都将与 SQL Server 代理作业(对 database_name.table_name 启动表增量填充)相关联。
单击“确定”。 保存任何更改并退出**“全文索引属性”**对话框。
[返回页首]
查看索引表和列的属性
一些 Transact-SQL 函数(例如 OBJECTPROPERTYEX)可用来获取各种全文索引属性的值。 此信息可用于全文搜索的管理和故障排除。
下表列出了与索引表和列相关的全文属性及其相关 Transact-SQL 函数。
属性 |
说明 |
函数 |
---|---|---|
FullTextTypeColumn |
表中的 TYPE COLUMN,其中包含列的文档类型信息。 |
|
IsFulltextIndexed |
列是否启用了全文索引。 |
COLUMNPROPERTY |
IsFulltextKey |
索引是否为表的全文键。 |
|
TableFulltextBackgroundUpdateIndexOn |
表是否具有全文后台更新索引。 |
|
TableFulltextCatalogId |
表的全文索引数据所在的全文目录 ID。 |
OBJECTPROPERTYEX |
TableFulltextChangeTrackingOn |
表是否启用了全文更改跟踪。 |
OBJECTPROPERTYEX |
TableFulltextDocsProcessed |
自开始全文索引以来所处理的行数。 |
OBJECTPROPERTYEX |
TableFulltextFailCount |
全文搜索未编制索引的行数。 |
OBJECTPROPERTYEX |
TableFulltextItemCount |
成功编制了全文索引的行数。 |
OBJECTPROPERTYEX |
TableFulltextKeyColumn |
全文唯一键列的列 ID。 |
OBJECTPROPERTYEX |
TableFullTextMergeStatus |
具有全文索引的表当前是否正在合并。 |
OBJECTPROPERTYEX |
TableFulltextPendingChanges |
要处理的挂起更改跟踪项的数目。 |
OBJECTPROPERTYEX |
TableFulltextPopulateStatus |
全文表的填充状态。 |
OBJECTPROPERTYEX |
TableHasActiveFulltextIndex |
表是否具有活动的全文索引。 |
OBJECTPROPERTYEX |
[返回页首]
获取有关全文键列的信息
通常情况下,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。
[返回页首]
为表禁用和重新启用全文索引
在 SQL Server 中,默认情况下所有由用户创建的数据库都启用了全文索引。 另外,在为表创建全文索引并将列添加到索引之后,就会自动为单个表启用全文索引。 从表的全文索引中删除最后一列时,会自动为表禁用全文索引。
对于具有全文索引的表,可以使用 SQL Server Management Studio 手动为表禁用或重新启用全文索引。
为表启用全文索引
展开服务器组,展开**“数据库”**,再展开包含您要为其启用全文索引的表的数据库。
展开“表”,然后右键单击要为其禁用或重新启用全文索引的表。
选择**“全文索引”,然后单击“禁用全文索引”或“启用全文索引”**。
[返回页首]
从表中删除全文索引
从表中删除全文索引
在对象资源管理器中,右键单击要删除的全文索引所在的表。
选择**“删除全文索引”**。
在出现提示时,单击**“确定”**,确认是否要删除该全文索引。
[返回页首]