sp_fulltext_keymappings (Transact-SQL)

Возвращаются сопоставления идентификаторов документов (DocIds) и значений полнотекстовых ключей. Столбец DocId содержит значения для целого числа bigint, соответствующего определенному значению полнотекстового ключа в определенной таблице, в которой выполняется полнотекстовое индексирование. Значения DocId, удовлетворяющие условию поиска, передаются из средства полнотекстового поиска в компонент Database Engine, где они сопоставляются со значениями полнотекстового ключа из базовой таблицы, к которой был сделан запрос. Столбец полнотекстового ключа — это уникальный индекс, который необходим для одного столбца таблицы. 

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

sp_fulltext_keymappings { table_id | table_id, docid | table_id, NULL, key }

Параметры

  • table_id
    Идентификатор объекта полнотекстовой индексированной таблицы. Если указано недопустимое значение table_id, будет возвращена ошибка. Дополнительные сведения о получении идентификатора для таблицы см. в разделе OBJECT_ID (Transact-SQL).

  • docid
    Внутренний идентификатор документа (DocId), который соответствует значению ключа. При использовании недопустимого значения docid не происходит возврата значений. Дополнительные сведения об идентификаторах документов см. в разделе Структура полнотекстового индекса.

  • key
    Значение полнотекстового ключа из указанной таблицы. При использовании недопустимого значения key не происходит возврата значений. Дополнительные сведения о значениях ключей полнотекстового поиска см. в разделах Как запрашивать сведения о столбце полнотекстового ключа (Transact-SQL).

Важное примечаниеВажно!

Дополнительные сведения об использовании одного, двух или трех параметров см. в подразделе «Примечания» далее в этом разделе.

Значения кода возврата

Нет.

Результирующие наборы

Имя столбца

Тип данных

Описание

DocId

bigint

Столбец внутреннего идентификатора документа (DocId), который соответствует значению ключа.

Ключ

*

Значение полнотекстового ключа из указанной таблицы.

Если в таблице сопоставлений отсутствуют полнотекстовые ключи, то возвращается пустой набор строк.

* Тип данных для столбца Key совпадает с типом данных столбца полнотекстового ключа в базовой таблице.

Разрешения

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

Замечания

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

Список параметров...…

Получен следующий результат…

table_id

Если был выполнен запуск только с параметром table_id, sp_fulltext_keymappings возвращает все значения полнотекстовых ключей (Key) из указанной базовой таблицы вместе с DocId, который соответствует каждому ключу. В это число входят ключи, которые должны быть удалены.

Эта функция используется для диагностики и устранения неисправностей при возникновении различных проблем. Эту функцию рекомендуется использовать для просмотра содержимого полнотекстовых индексов, если выбранный полнотекстовый ключ не имеет целочисленного типа данных. При этом выполняется соединение результатов sp_fulltext_keymappings с результатами sys.dm_fts_index_keywords_by_document. Дополнительные сведения см. в разделе sys.dm_fts_index_keywords_by_document (Transact-SQL).

Однако, как правило, рекомендуется при возможности выполнять sp_fulltext_keymappings с параметрами, которые указывают полнотекстовый ключ или DocId. Это более эффективный способ, чем возврат всей карты ключей, особенно для очень большой таблицы, при работе с которой может возникнуть значительное снижение производительности при возврате всей карты ключей.

table_id, docid

Если указаны только параметры table_id и docid, то docid должны иметь значение, отличное от NULL, и для заданной таблицы должен быть указан действительный DocId. Эта функция используется для изоляции настраиваемых полнотекстовых ключей из базовой таблицы, которая соответствует DocId определенного полнотекстового индекса.

table_id, NULL, key

Если представлены три параметра, то второй параметр должен иметь значение NULL, а key должен иметь значение, отличное от NULL, и задавать действительное значение полнотекстового ключа для указанной таблицы. Эта функция используется для изоляции настраиваемых DocId, которые соответствуют определенным полнотекстовым ключам в базовой таблице.

Возвращается ошибка, если выполняется любое из следующих условий.

  • Указано недопустимое значение table_id.

  • Таблица не имеет полнотекстового индекса.

  • Обнаружено значение NULL для параметра, который не допускает значения NULL.

Примеры

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

В примерах этого раздела используется таблица Production.ProductReview образца базы данных AdventureWorks2008R2. Этот индекс можно создать, выполнив пример, приведенный для таблицы ProductReview в разделе CREATE FULLTEXT INDEX (Transact-SQL).

А. Получение значений Key и DocId

В следующем примере показана инструкция DECLARE, которая создает локальную переменную @table_id и присваивает ей в качестве значения идентификатор таблицы ProductReview. В примере выполняется хранимая процедура sp_fulltext_keymappings, которая задает @table_id для параметра table_id.

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

Применение хранимой процедуры sp_fulltext_keymappings только с параметром table_id подходит для небольших таблиц.

USE AdventureWorks2008R2;
GO
DECLARE @table_id int = OBJECT_ID(N'Production.ProductReview');
EXEC sp_fulltext_keymappings @table_id;
GO

Этот пример возвращает из таблицы идентификаторы DocId и полнотекстовые ключи:

docid

key

1

1

1

2

2

2

3

3

3

4

4

4

Б. Получение значения DocId для конкретного значения Key

В следующем примере используется инструкция DECLARE, которая создает локальную переменную @table_id и присваивает ей в качестве значения идентификатор таблицы ProductReview. В примере выполняется хранимая процедура sp_fulltext_keymappings, которая задает значение @table_id для параметра table_id, значение NULL — для параметра docid и значение 4 — для параметра key.

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

Вызов хранимой процедуры sp_fulltext_keymappings только с параметром table_idподходит лишь для небольших таблиц.

USE AdventureWorks2008R2;
GO
DECLARE @table_id int = OBJECT_ID(N'Production.ProductReview');
EXEC sp_fulltext_keymappings @table_id, NULL, 4;
GO

В результате выполнения данного примера возвращаются следующие результаты:

docid

key

4

4

4