Полнотекстовые индексы

Изменения: 17 июля 2006 г.

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

В SQL Server 2005 размеры полнотекстового индекса ограничены только доступными ресурсами памяти компьютера, на котором запущен экземпляр SQL Server.

Процесс создания и использования полнотекстового индекса называется заполнением индекса. Microsoft SQL Server 2005 поддерживает следующие типы заполнения полнотекстовых индексов.

  • Полное заполнение.
  • Заполнение на основе отслеживания изменений.
  • Добавочное заполнение на основе временных меток.

Полное заполнение

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

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

Если не требуется заполнять полнотекстовый индекс во время его создания при помощи инструкции CREATE FULLTEXT INDEX, укажите вместе с параметром CHANGE TRACKING OFF параметр NO POPULATION. Индекс будет заполнен только после того, как пользователь выполнит команду ALTER FULLTEXT INDEX с предложением START FULL, INCREMENTAL или UPDATE POPULATION.

Заполнение на основе отслеживания изменений

SQL Server поддерживает список всех измененных строк таблицы, подлежащей полнотекстовому индексированию. Эти изменения распространяются на полнотекстовый индекс.

Чтобы начать отслеживание изменений, укажите параметр WITH CHANGE_TRACKING в инструкции CREATE FULLTEXT INDEX. При отслеживании изменений можно указать, как изменения будут распространяться на полнотекстовый индекс.

ms142575.note(ru-ru,SQL.90).gifПримечание.
Заполнение, основанное на отслеживании изменений, требует, чтобы было выполнено первоначальное заполнение соответствующего полнотекстового индекса.

Чтобы изменения распространялись на полнотекстовый индекс автоматически, укажите в инструкции CREATE FULLTEXT INDEX или в инструкции ALTER FULLTEXT INDEX параметр AUTO.

Указав параметр MANUAL, можно выбрать распространение изменений вручную — по плану, с использованием агента SQL Server или самостоятельно.

ms142575.note(ru-ru,SQL.90).gifПримечание.
С отслеживанием изменений связаны небольшие накладные расходы. Если не требуется, чтобы SQL Server выполнял отслеживание изменений, воспользуйтесь параметром CHANGE TRACKING OFF.

Добавочное заполнение на основе временных меток

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

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

По окончании заполнения средство сбора данных SQL сохраняет новое значение timestamp. Оно равняется наибольшему значению временной метки, которое встретилось средству сбора данных SQL. Это значение будет использовано в начале последующего добавочного заполнения.

См. также

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

Основы полнотекстового поиска

Другие ресурсы

CREATE FULLTEXT INDEX (Transact-SQL)
ALTER FULLTEXT INDEX (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

17 июля 2006 г.

Новое содержимое.
  • Добавлено предложение о том, что размер полнотекстового индекса ограничен только доступными ресурсами памяти компьютера.