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


Процесс полнотекстового индексирования и обработки запросов

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

Процесс полнотекстового индексирования

При инициировании полнотекстового заполнения (также называемого сканированием) компонент Database Engine принудительно загружает в память крупные пакеты данных и указывает службе полнотекстового поиска Microsoft SQL Server (MSFTESQL) начать индексирование. Служба MSFTESQL индексирует символьные и отформатированные двоичные данные, содержащиеся в столбце или столбцах таблицы. Используя обработчик протоколов, механизм полнотекстового поиска запрашивает данные из памяти для дальнейшей обработки, результатом которой является создание полнотекстового индекса.

При индексировании данных, хранящихся в столбце типа varbinary(max) или image, фильтр, реализующий интерфейс IFilter, извлекает текст в соответствии с заданным для этих данных форматом файлов (например, Microsoft Word). В некоторых случаях для работы компонентов-фильтров необходимо, чтобы данные varbinary(max) или image были записаны в каталог Temp учетной записи службы, а не принудительно загружены в память.

Одним из этапов обработки собранных текстовых данных является их анализ средством разбиения по словам, которое разделяет текст на отдельные лексемы, или ключевые слова. Язык, используемый при разбиении на лексемы, задается на уровне столбца или может быть определен компонентом-фильтром по данным типа varbinary(max), image или xml.

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

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

ms142591.note(ru-ru,SQL.90).gifПримечание.
Слияние фрагментов в главный индекс может сильно нагружать подсистему ввода-вывода вследствие записи и чтения больших объемов данных, но не приводит к блокировке входящих запросов.

Обработка полнотекстовых запросов

Полнотекстовый запрос, посланный клиентом, направляется в обработчик запросов SQL Server (QP) процесса SQL Server. Обработчик запросов передает его компоненту обработки полнотекстовых запросов, создающему дерево команд OLE DB и направляющему его в средство полнотекстового поиска (Microsoft) для SQL Server (MSFTESQL). В процессе MSFTESQL обработчик запросов средства полнотекстового поиска обрабатывает запрос с использованием файлов тезауруса и неучитываемых слов, а также средств разбиения по словам и парадигматических модулей. Обработав запрос, служба MSFTESQL возвращает результирующий набор процессу SQL Server. Затем результирующий набор можно использовать для дальнейшей обработки или возврата клиенту.

См. также

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

Архитектура компонента Full-Text Search

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

Основные понятия компонента Full-Text Search

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

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