sp_fulltext_keymappings (Transact-SQL)
返回文档标识符 (DocId) 和全文键值之间的映射。DocID 列包含的值为 bigint 整数值,该值映射到全文索引表中的某一特定全文键值。满足搜索条件的 DocId 值将从全文引擎传递到数据库引擎,在数据库引擎中,它们被映射到要查询的基表中的全文键值。全文键列是表的某一列上必需的唯一索引。
语法
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 值不会返回任何结果。有关全文键值的信息,请参阅如何查询全文键列 (Transact-SQL)。
重要提示 |
---|
有关使用一个、两个或三个参数的信息,请参阅本主题后面的“备注”部分。 |
返回代码值
无。
结果集
列名 |
数据类型 |
说明 |
---|---|---|
DocId |
bigint |
与键值相对应的内部文档标识符 (DocId) 列。 |
Key |
* |
指定表中的全文键值。 如果在映射表中不存在任何全文键,则返回一个空的行集。 |
* Key 的数据类型与基表中全文键列的数据类型相同。
权限
此函数是公开的,因此不需要任何特殊权限。
注释
下表说明了使用一个、两个或三个参数的效果。
此参数列表… |
结果… |
---|---|
table_id |
如果只使用 table_id 参数进行调用,sp_fulltext_keymappings 返回所指定基表中的所有全文键 (Key) 值,以及与每个键对应的 DocId。包括挂起删除的键。 此函数对于排除各种问题十分有用。如果所选的全文键不是整数数据类型,它对于查看全文索引内容尤为有用。这涉及到联接 sys.dm_fts_index_keywords_by_document 的结果及 sp_fulltext_keymappings 的结果。有关详细信息,请参阅 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
示例
注意 |
---|
本节中的示例使用 AdventureWorks2008R2 示例数据库的 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 AdventureWorks2008R2;
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 AdventureWorks2008R2;
GO
DECLARE @table_id int = OBJECT_ID(N'Production.ProductReview');
EXEC sp_fulltext_keymappings @table_id, NULL, 4;
GO
此示例返回以下结果。
docid |
key |
|
4 |
4 |
4 |