sys.dm_fts_index_keywords_by_property (Transact-SQL)

Применимо к:SQL ServerБаза данных Azure SQLУправляемый экземпляр Azure SQLБаза данных SQL в Microsoft Fabric

Возвращает данные, связанные со свойством, в полнотекстовом индексе данной таблицы. Сюда включаются все данные, принадлежащие любому свойству, зарегистрированному списком свойств поиска, связанным с этим полнотекстовым индексом.

sys.dm_fts_index_keywords_by_property — это динамическая функция управления, которая позволяет видеть, какие зарегистрированные свойства были излучены IFilters во время индекса, а также точное содержимое каждого свойства в каждом индексируемом документе.

  • Чтобы просмотреть весь контент на уровне документа (включая контент, связанный с свойствами), см. sys.dm_fts_index_keywords_by_document.

  • Для просмотра информации о полном тексте на более высоком уровне см. sys.dm_fts_index_keywords.

Сведения о списках свойств поиска см. в разделе "Свойства документа поиска" с помощью списков свойств поиска.

Syntax

sys.dm_fts_index_keywords_by_property
(
    DB_ID('database_name')
    , OBJECT_ID('table_name')
)

Аргументы

DB_ID('database_name')

Вызов функции DB_ID . DB_ID Это интеллект. Эта функция принимает имя базы данных и возвращает идентификатор базы данных, который sys.dm_fts_index_keywords_by_property используется для поиска указанной базы данных. Если аргумент 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 Да Идентификатор документа или строки, содержащей текущий термин, индексированный полнотекстовым индексом. Данный идентификатор соответствует значению полнотекстового ключа этого документа или строки.
property_id int Да Внутренний идентификатор свойства поиска внутри полного индекса таблицы, указанной в параметре OBJECT_ID .

10xFF обозначает специальный символ, указывающий на конец файла или набора данных.

После добавления свойства к списку свойств поиска механизм полнотекстового поиска регистрирует это свойство и назначает ему внутренний идентификатор свойства, относящийся к указанному списку свойств. Внутренний идентификатор свойства, являющийся целым числом, не повторяется в заданном списке свойств поиска. Если данное свойство зарегистрировано в нескольких списках свойств поиска, каждому списку свойств поиска может быть назначен отдельный внутренний идентификатор свойств.

Note

Внутренний идентификатор свойства отличается от идентификатора свойства целого числа, который указывается при добавлении свойства в список свойств поиска. Дополнительные сведения см. в разделе "Свойства документа поиска" со списками свойств поиска.

Чтобы увидеть связь между property_id и названием объекта, см. sys.registered_search_properties.

Замечания

Динамическое административное представление может давать ответы на вопросы. Например:

  • Какое содержимое хранится в данном свойстве данного DocID?

  • Насколько распространено это свойство среди индексированных документов?

  • В каких документах данное свойство содержится на самом деле? Это полезно, если запрос по заданному свойству поиска не возвращает документ, который вы ожидали найти.

Когда полнотекстовый столбец ключа является целым типом данных, как рекомендуется, он document_id напрямую отображается с полнотекстовым значением ключа в базовой таблице.

В отличие от этого, когда полный текст использует нецелочисленный тип данных, document_id он не представляет полнотекстовый ключ в базовой таблице. В этом случае, чтобы определить строку в базовой таблице, возвращаемую dm_fts_index_keywords_by_property, нужно соединить этот вид с результатами, возвращаемыми sp_fulltext_keymappings.

Чтобы выполнить соединение, нужно сохранить выход хранимой процедуры во временной таблице. Затем можно соединить document_id столбец с dm_fts_index_keywords_by_propertyDocId столбцом, который возвращается этой сохранённой процедурой. Столбец с временной меткой не может получать значения во время вставки, потому что они автоматически генерируются 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_property(@db_id, @table_id) AS kbd
     INNER JOIN #MyTempTable AS tt
         ON tt.[docid] = kbd.document_id;
GO

Permissions

Требуется SELECT разрешение на столбцы, охватываемые полным индексом текста, и CREATE FULLTEXT CATALOG разрешения.

Examples

В следующем примере производится возвращение ключевых слов из свойства Author полнотекстового индекса для таблицы Production.Document в образце базы данных AdventureWorks2025. В примере используется псевдоним KWBPOP для таблицы, возвращаемой sys.dm_fts_index_keywords_by_property . В примере используются внутренние соединения для объединения столбцов из sys.registered_search_properties и sys.fulltext_indexes.

-- Once the full-text index is configured to support property searching
-- on the Author property, return any keywords indexed for this property.
USE AdventureWorks2025;
GO

SELECT KWBPOP.*
FROM sys.dm_fts_index_keywords_by_property(DB_ID(), OBJECT_ID('Production.Document')) AS KWBPOP
     INNER JOIN sys.registered_search_properties AS RSP
         ON ((KWBPOP.property_id = RSP.property_id)
         AND (RSP.property_name = 'Author'))
     INNER JOIN sys.fulltext_indexes AS FTI
         ON ((FTI.[OBJECT_ID] = OBJECT_ID('Production.Document'))
         AND (RSP.property_list_id = FTI.property_list_id));
GO