sys.dm_fts_index_keywords_by_document (Transact-SQL)
返回与指定表关联的全文索引的文档级内容的相关信息。
sys.dm_fts_index_keywords_by_document 是一个动态管理函数。
查看高级全文索引信息
查看与文档属性有关的属性级内容的相关信息
语法
sys.dm_fts_index_keywords_by_document
(
DB_ID('database_name'), OBJECT_ID('table_name')
)
参数
db_id('database_name')
对 DB_ID() 函数的调用。 此函数接受数据库名称并返回数据库 ID,sys.dm_fts_index_keywords_by_document 使用此 ID 来查找指定的数据库。 如果省略 database_name,则返回当前数据库 ID。object_id('table_name')
对 OBJECT_ID() 函数的调用。 此函数接受表名,并返回包含要检查的全文索引的表的表 ID。
返回的表
列 |
数据类型 |
说明 |
||
---|---|---|---|---|
keyword |
nvarchar(4000) |
存储在全文索引中的关键字的十六进制表示形式。
|
||
display_term |
nvarchar(4000) |
关键字的可读格式。 此格式是从全文索引中存储的内部格式派生的。
|
||
column_id |
int |
从中对当前关键字进行全文索引的列的 ID。 |
||
document_id |
int |
从中对当前字词进行全文索引的文档或行的 ID。 此 ID 对应于该文档或行的全文键值。 |
||
occurrence_count |
int |
当前关键字在 document_id 指示的文档或行中出现的次数。 如果指定 'search_property_name',则 occurrence_count 仅显示当前关键字在文档或行的指定搜索属性中出现的次数。 |
注释
sys.dm_fts_index_keywords_by_document 返回的信息可用于确定以下内容,但不仅限于此:
全文索引包含的关键字的总数。
关键字是否为给定文档或行的一部分。
关键字在整个全文索引中出现了多少次,即:
(SUM(occurrence_count) WHERE keyword=keyword_value )
关键字在给定文档或行中出现了多少次。
给定文档或行中包含多少关键字。
另外,还可以使用 sys.dm_fts_index_keywords_by_document 提供的信息检索属于给定文档或行的所有关键字。
如果全文键列是建议的整数数据类型,则 document_id 直接映射到基表中的全文键值。
相反,如果全文键列使用非整数数据类型,则 document_id 不表示基表中的全文键。 在这种情况下,若要标识基表中 dm_fts_index_keywords_by_document 返回的行,您需要将该视图与 sp_fulltext_keymappings 返回的结果联接在一起。 在联接它们之前,您必须将存储过程的输出存储在临时表中。 然后,可以将 dm_fts_index_keywords_by_document 的 document_id 列与此存储过程返回的 DocId 列联接在一起。 请注意,timestamp 列无法在插入时检索值,因为它们是由 SQL Server 自动生成的。 因此,必须将 timestamp 列转换为 varbinary(8) 列。 下面的示例说明了这些步骤。 在该示例中,table_id 是表的 ID,database_name 是数据库的名称,table_name 是表的名称。
USE database_name;
GO
CREATE TABLE #MyTempTable
(
docid INT PRIMARY KEY ,
[key] INT NOT NULL
);
DECLARE @db_id int = db_id(N'database_name');
DECLARE @table_id int = OBJECT_ID(N'table_name');
INSERT INTO #MyTempTable EXEC sp_fulltext_keymappings @table_id;
SELECT * FROM sys.dm_fts_index_keywords_by_document
( @db_id, @table_id ) kbd
INNER JOIN #MyTempTable tt ON tt.[docid]=kbd.document_id;
GO
权限
要求具有全文索引涵盖的列的 SELECT 权限以及 CREATE FULLTEXT CATALOG 权限。
示例
A.在文档级别显示全文索引内容
下面的示例显示 AdventureWorks 示例数据库中的 HumanResources.JobCandidate 表的文档级全文索引内容。
注意 |
---|
您可以通过执行在 CREATE FULLTEXT INDEX (Transact-SQL) 中为HumanResources.JobCandidate 表提供的示例来创建此索引。 |
SELECT * FROM sys.dm_fts_index_keywords_by_document(db_id('AdventureWorks'),
object_id('HumanResources.JobCandidate'));
GO
请参阅
参考
全文搜索和语义搜索动态管理视图和函数 (Transact-SQL)
sys.dm_fts_index_keywords (Transact-SQL)
sys.dm_fts_index_keywords_by_property (Transact-SQL)
sp_fulltext_keymappings (Transact-SQL)