sys.dm_fts_index_keywords_by_document (Transact-SQL)
适用于:SQL ServerAzure SQL 托管实例Analytics Platform System (PDW)
返回与指定表关联的全文索引的文档级内容的相关信息。
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用于查找指定的数据库。 如果 省略database_name ,则返回当前数据库 ID。
object_id('table_name')
对 OBJECT_ID() 函数的调用。 此函数接受表名,并返回包含要检查的全文索引的表的表 ID。
返回的表
列 | 数据类型 | 描述 |
---|---|---|
keyword | nvarchar(4000) | 存储在全文索引中的关键字的十六进制表示形式。 注意:OxFF 表示指示文件或数据集末尾的特殊字符。 |
display_term | nvarchar(4000) | 关键字的可读格式。 此格式派生自存储在全文索引中的内部格式。 注意:OxFF 表示指示文件或数据集末尾的特殊字符。 |
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_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 列联接。 请注意, 时间戳 列在插入时无法接收值,因为它们是由 SQL Server 自动生成的。 因此, 时间戳 列必须转换为 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
权限
需要对全文索引和 CREATE FULLTEXT CATALOG 权限涵盖的列具有 SELECT 权限。
示例
A. 在文档级别显示全文索引内容
以下示例显示示例数据库中文档级别HumanResources.JobCandidate
AdventureWorks2022
全文索引的内容。
注意
可以通过执行 CREATE FULLTEXT INDEX (Transact-SQL) 中为HumanResources.JobCandidate
表提供的示例来创建此索引。
SELECT * FROM sys.dm_fts_index_keywords_by_document(db_id('AdventureWorks2022'),
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)
提高全文索引的性能
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈