sp_fulltext_keymappings (Transact-SQL)

 

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

适用范围:SQL Server(SQL Server 2008 到当前版本https://go.microsoft.com/fwlink/p/?LinkId=299658) SQL 数据库 V12。

主题链接图标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
    指定表中的全文键值。 无效的 key 值不会返回任何结果。 有关全文键值的信息,请参阅管理全文索引

重要

有关使用一个、两个或三个参数的信息,请参阅本主题后面的“备注”部分。

返回代码值

无。

结果集

列名

数据类型

说明

DocId

bigint

与键值相对应的内部文档标识符 (DocId) 列。

Key

*

指定表中的全文键值。

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

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

权限

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

备注

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

参数列表

结果

table_id

如果只使用 table_id 参数进行调用,sp_fulltext_keymappings 返回所指定基表中的所有全文键 (Key) 值,以及与每个键对应的 DocId。 包括挂起删除的键。

此函数对于排除各种问题十分有用。 如果所选的全文键不是整数数据类型,它对于查看全文索引内容尤为有用。 这涉及到联接 sp_fulltext_keymappings 的结果与 sys.dm_fts_index_keywords_by_document 的结果。 有关详细信息,请参阅sys.dm_fts_index_keywords_by_document (Transact-SQL)

但是,我们通常建议在可能的情况下使用指定了特定全文键或 DocID 的参数执行 sp_fulltext_keymappings。 与返回完整的键映射相比,这种方法要高效许多,尤其是在处理超大表的时候,对于这些表,返回整个键映射的性能开销可能过于巨大。

table_iddocid

如果仅指定 table_iddociddocid 必须是非 NULL 并在指定的表中指定一个有效的 DocId。 若要隔离基表中与特定全文索引的 DocID 对应的自定义全文键,此函数十分有用。

table_id, NULL, key

如果存在三个参数,第二个参数必须是 NULL,并且 key 必须为非 NULL 并指定来自指定表的一个有效全文键值。 若要隔离基表中与特定全文键对应的 DocID,此函数十分有用。

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

  • 指定了一个无效 table_id

  • 表没有经过全文索引。

  • 参数应该为非 NULL,但是现在为 NULL

示例

备注

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

A. 获取所有键和 DocId 值

下面的示例使用 DECLARE 语句创建局部变量 @table\_id,并将 ProductReview 表的 ID 赋值给该变量。 此示例通过为 table_id 参数指定 @table\_id 来执行 sp_fulltext_keymappings

备注

小型表适合于使用仅具有 table_id 参数的 sp_fulltext_keymappings

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

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

docid

key

1

1

1

2

2

2

3

3

3

4

4

4

B. 获取特定键值的 DocId 值

下面的示例使用 DECLARE 语句创建局部变量 @table\_id,并将 ProductReview 表的 ID 赋值给该变量。 此示例通过为 table_id 参数指定 @table\_id、为 docid 参数指定 NULL 以及为 key 参数指定 4 来执行 sp_fulltext_keymappings

备注

小表适合于使用仅具有 table_id 参数的 sp_fulltext_keymappings

USE AdventureWorks2012; GO DECLARE @table_id int = OBJECT_ID(N'Production.ProductReview'); EXEC sp_fulltext_keymappings @table_id, NULL, 4; GO

此示例返回以下结果。

docid

key

4

4

4

请参阅

全文搜索和语义搜索存储过程 (Transact-SQL)