sp_fulltext_keymappings (Transact-SQL)
返回文档标识符 (DocId) 与全文键值之间的映射。DocId 列包含 bigint 整数的值,该值映射到全文索引表中的某一特定全文键值。 满足搜索条件的 DocId 值将从全文引擎传递到数据库引擎,在数据库引擎中,它们被映射到要查询的基表中的全文键值。 全文键列是表的某一列上必需的唯一索引。
适用范围:SQL Server(SQL Server 2008 到当前版本https://go.microsoft.com/fwlink/p/?LinkId=299658) SQL 数据库 V12。 |
语法
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_id, docid |
如果仅指定 table_id 和 docid,docid 必须是非 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 |