Поделиться через


sys.dm_fts_index_keywords_by_property (Transact-SQL)

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

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(). Эта функция принимает имя таблицы и возвращает идентификатор таблицы, содержащей полнотекстовый индекс для проверки.

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

Столбец

Тип данных

Описание

keyword

nvarchar(4000)

Шестнадцатеричное представление ключевого слова, которое хранится в полнотекстовом индексе.

ПримечаниеПримечание

OxFF представляет собой специальный символ, который служит признаком конца файла или набора данных.

display_term

nvarchar(4000)

Ключевое слово в понятном формате. Этот формат является производным от внутреннего формата хранения полнотекстового индекса.

ПримечаниеПримечание

OxFF представляет собой специальный символ, который служит признаком конца файла или набора данных.

column_id

int

Идентификатор столбца, содержащий данное ключевое слово, индексированное полнотекстовым индексом.

document_id

int

Идентификатор документа или строки, содержащей текущий термин, индексированный полнотекстовым индексом. Данный идентификатор соответствует значению полнотекстового ключа этого документа или строки.

property_id

int

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

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

ПримечаниеПримечание

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

Просмотр взаимосвязей между идентификатором и именем свойства

Замечания

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

  • Какое содержимое хранится в данном свойстве данного 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, возвращаемым этой хранимой процедурой. Следует заметить, что столбец типа timestamp не может принимать значения во время операции вставки, поскольку они автоматически формируются SQL Server. Поэтому столбец типа timestamp необходимо преобразовать в столбец типа 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 AdventureWorks;
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

См. также

Справочник

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)

Основные понятия

Компонент Full-Text Search (SQL Server)

Улучшение производительности полнотекстовых индексов

Поиск свойств документа с использованием списков свойств поиска