sp_fulltext_keymappings (Transact-SQL)

适用于:SQL ServerAzure SQL 托管实例Analytics Platform System (PDW)

返回文档标识符 (DocId) 和全文键值之间的映射。 DocId 列包含一个 bigint 整数的值,该整数映射到全文索引表中的特定全文键值。 满足搜索条件的 DocId 值将从全文引擎传递到数据库引擎,在数据库引擎中,它们被映射到要查询的基表中的全文键值。 全文键列是表的某一列上必需的唯一索引。

Transact-SQL 语法约定

语法

sp_fulltext_keymappings { table_id | table_id , docId | table_id , NULL , key }
[ ; ]

参数

table_id

全文索引表的对象 ID。 如果指定无效 table_id,则返回错误。 有关获取表的对象 ID 的信息,请参阅OBJECT_ID(Transact-SQL)。

docId

对应于键值的内部文档标识符(DocId)。 无效 的 docId 值不返回任何结果。

指定表中的全文键值。 无效的 key 值不会返回任何结果。 有关全文键值的信息,请参阅 “管理全文索引”。

返回代码值

无。

结果集

列名称 数据类型 说明
DocId bigint 对应于键值的内部文档标识符 (DocId) 列。
Key 1 指定表中的全文键值。

如果在映射表中不存在任何全文键,则返回一个空的行集。

1 Key 的数据类型与基表中全文键列的数据类型相同。

权限

此函数是公共的,不需要任何特殊权限。

注解

下表说明了使用一个、两个或三个参数的效果。

此参数列表... 是否有此结果...
table_id 使用 table_id 参数调用时, sp_fulltext_keymappings 返回指定基表中的所有全文键(键)值,以及对应于每个键的 DocId。 包括挂起删除的键。

此函数可用于排查各种问题。 当所选全文键不是整数数据类型时,它可用于查看全文索引内容。 这涉及到将结果 sp_fulltext_keymappings 与结果 sys.dm_fts_index_keywords_by_document联接在一起。 有关详细信息,请参阅sys.dm_fts_index_关键字 (keyword)s_by_document(Transact-SQL)。

但是,一般情况下,我们建议使用指定特定全文键或 DocId 的参数执行 sp_fulltext_keymappings (如果可能)。 这比返回整个键映射更有效,尤其是对于返回整个键映射的性能成本可能很大的大型表。
table_id,docId 如果仅指定了 table_iddocId,docId 必须是非 NULL,并在指定的表中指定有效的 DocId。 若要隔离基表中与特定全文索引的 DocID 对应的自定义全文键,此函数十分有用。
table_id、NULL、密钥 如果存在三个参数,则第二个参数必须为 NULL,并且 必须为非 NULL,并且指定指定表中的有效全文键值。 若要隔离基表中与特定全文键对应的 DocID,此函数十分有用。

在以下任一情况下会返回一个错误:

  • 指定无效 table_id
  • 该表未编制全文索引
  • NULL 对于可能为非 null 的参数,遇到 。

示例

注意

本节中的示例使用 Production.ProductReview AdventureWorks2022 示例数据库的表。 可以通过执行 CREATE FULLTEXT INDEX (Transact-SQL)ProductReview表提供的示例来创建此索引。

A. 获取所有 Key 和 DocId 值

以下示例使用 DECLARE 语句创建局部变量, @table_id 并将表的 ProductReview ID 指定为其值。 该示例执行sp_fulltext_keymappings指定@table_idtable_id参数。

注意

sp_fulltext_keymappings与 table_id 参数一起使用适用于小型表。

USE AdventureWorks2022;
GO
DECLARE @table_id int = OBJECT_ID(N'Production.ProductReview');
EXEC sp_fulltext_keymappings @table_id;
GO

此示例返回表中的所有 DocId 和全文键,如下所示:

TABLE docId key
1 1 1
2 2 2
3 3 3
4 4 4

B. 获取特定键值的 DocId 值

下面的示例使用 DECLARE 语句创建局部变量 @table_id,并将 ProductReview 表的 ID 赋值给该变量。 该示例执行sp_fulltext_keymappings指定@table_idtable_id参数、docId 参数的 NULL,以及键参数的 4。

注意

sp_fulltext_keymappings与适合小型表的 table_id 参数一起使用。

USE AdventureWorks2022;
GO

DECLARE @table_id int = OBJECT_ID(N'Production.ProductReview');

EXEC sp_fulltext_keymappings @table_id, NULL, 4;
GO

此示例返回以下结果。

TABLE docId key
4 4 4