Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:SQL Server
База данных Azure SQL
Управляемый экземпляр Azure SQL
База данных SQL в Microsoft Fabric
Возвращает сведения о содержимом полнотекстового индекса на уровне документа, связанного с указанной таблицей.
sys.dm_fts_index_keywords_by_document — это динамическая функция управления.
Для просмотра информации о полном тексте на более высоком уровне см. sys.dm_fts_index_keywords.
Чтобы просмотреть информацию о содержании на уровне свойства, связанном с свойством документа, см. sys.dm_fts_index_keywords_by_property.
Syntax
sys.dm_fts_index_keywords_by_document
(
DB_ID('database_name')
, OBJECT_ID('table_name')
)
Аргументы
DB_ID('database_name')
Вызов функции DB_ID .
DB_ID
Это интеллект. Эта функция принимает имя базы данных и возвращает идентификатор базы данных, который sys.dm_fts_index_keywords_by_document используется для поиска указанной базы данных. Если аргумент database_name не указан, возвращается идентификатор текущей базы данных.
OBJECT_ID('table_name')
Вызов функции OBJECT_ID .
OBJECT_ID
Это интеллект. Эта функция принимает имя таблицы и возвращает ID таблицы с полным текстом индекса для проверки.
Таблица возвращена
| Название столбца | Тип данных | Нуллибельный | Описание |
|---|---|---|---|
keyword
1 |
varbinary(128) | Нет | Шестнадцатеричное представление ключевого слова, которое хранится в полнотекстовом индексе. |
display_term
1 |
nvarchar(4000) | Нет | Ключевое слово в понятном формате. Этот формат является производным от внутреннего формата хранения полнотекстового индекса. |
column_id |
int | Нет | Идентификатор столбца, содержащий данное ключевое слово, индексированное полнотекстовым индексом. |
document_id |
bigint | Да | Идентификатор документа или строки, содержащей текущий термин, индексированный полнотекстовым индексом. Данный идентификатор соответствует значению полнотекстового ключа этого документа или строки. |
occurrence_count |
int | Да | Количество появления текущего ключевого слова в документе или строке, обозначенном .document_id При указании 'search_property_name' отображается occurrence_count только количество появления текущего ключевого слова в указанном свойстве поиска внутри документа или строки. |
10xFF обозначает специальный символ, указывающий на конец файла или набора данных.
Замечания
Полученная 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.
Чтобы выполнить соединение, нужно сохранить выход хранимой процедуры во временной таблице. Затем можно соединить document_id столбец с dm_fts_index_keywords_by_documentDocId столбцом, который возвращается этой сохранённой процедурой. Столбец с временной меткой не может получать значения во время вставки, потому что они автоматически генерируются SQL Server.
Поэтому столбец метки времени должен быть преобразован в столбцы varbinary(8). Следующий пример показывает эти шаги. В этом примере @table_id — идентификатор вашей таблицы, database_name — название вашей базы данных, а table_name — имя вашей таблицы.
USE database_name;
GO
CREATE TABLE #MyTempTable
(
docid INT PRIMARY KEY,
[key] INT NOT NULL
);
DECLARE @db_id AS INT = DB_ID(N'database_name');
DECLARE @table_id AS INT = OBJECT_ID(N'table_name');
INSERT INTO #MyTempTable
EXECUTE sp_fulltext_keymappings @table_id;
SELECT *
FROM sys.dm_fts_index_keywords_by_document(@db_id, @table_id) AS kbd
INNER JOIN #MyTempTable AS tt
ON tt.[docid] = kbd.document_id;
GO
Permissions
Требуется SELECT разрешение на столбцы, охватываемые полным индексом текста, и CREATE FULLTEXT CATALOG разрешения.
Examples
А. Отображение полнотекстового индексного содержимого на уровне документа
В следующем примере отображается содержимое полнотекстового индекса на уровне документа в таблице HumanResources.JobCandidate образца базы данных AdventureWorks2025.
Note
Вы можете создать этот индекс, выполнив пример, предоставленный для HumanResources.JobCandidate таблицы в CREATE FULLTEXT INDEX.
SELECT *
FROM sys.dm_fts_index_keywords_by_document(DB_ID('AdventureWorks2025'), OBJECT_ID('HumanResources.JobCandidate'));
GO