sys.dm_fts_index_keywords_by_property (Transact-SQL)

Применимо к:SQL Server

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

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

Просмотр всего содержимого уровня документа (включая содержимое, связанное с свойствами)

Просмотр сведений о полнотекстовом индексе более высокого уровня

Заметка

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

Синтаксис

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

Аргументы

db_id('database_name')
Вызов функции DB_ID(). Эта функция принимает имя базы данных и возвращает идентификатор базы данных, который sys.dm_fts_index_keywords_by_property используется для поиска указанной базы данных. Если аргумент database_name не указан, возвращается идентификатор текущей базы данных.

object_id('table_name')
Вызов функции OBJECT_ID(). Эта функция принимает имя таблицы и возвращает идентификатор таблицы, содержащей полнотекстовый индекс для проверки.

Возвращаемая таблица

Column Тип данных Описание:
keyword nvarchar(4000) Шестнадцатеричное представление ключевого слова, которое хранится в полнотекстовом индексе.

Примечание. OxFF представляет специальный символ, указывающий конец файла или набора данных.
display_term nvarchar(4000) Ключевое слово в понятном формате. Этот формат является производным от внутреннего формата хранения полнотекстового индекса.

Примечание. OxFF представляет специальный символ, указывающий конец файла или набора данных.
column_id int Идентификатор столбца, содержащий данное ключевое слово, индексированное полнотекстовым индексом.
document_id int Идентификатор документа или строки, содержащей текущий термин, индексированный полнотекстовым индексом. Данный идентификатор соответствует значению полнотекстового ключа этого документа или строки.
property_id int Внутренний идентификатор свойства поиска в полнотекстовом индексе таблицы, указанной в параметре OBJECT_ID('table_name').

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

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

Чтобы просмотреть связь между property_id и именем свойства:
sys.registered_search_properties (Transact-SQL)

Замечания

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

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

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

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

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

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

Разрешения

Необходимо разрешение CREATE FULLTEXT CATALOG, а также разрешение SELECT на столбцы, включенные в полнотекстовый индекс.

Примеры

В следующем примере производится возвращение ключевых слов из свойства Author полнотекстового индекса для таблицы Production.Document в образце базы данных AdventureWorks. В примере используется псевдоним 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 AdventureWorks2022;  
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  

См. также

Компонент Full-text Search
Повышение производительности полнотекстовых индексов
sp_fulltext_keymappings (Transact-SQL)
sys.dm_fts_index_keywords_by_document (Transact-SQL)
sys.dm_fts_index_keywords (Transact-SQL)
sys.registered_search_properties (Transact-SQL)
sys.registered_search_property_lists (Transact-SQL)
Поиск свойств документа с использованием списков свойств поиска