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

Полнотекстовый поиск работает на базе средства полнотекстового поиска. Средство полнотекстового поиска имеет две роли: поддержка индексирования и поддержка запросов.

Начиная с версии SQL Server 2008 архитектура полнотекстового поиска состоит из следующих процессов.

  • Процесс SQL Server (sqlservr.exe).

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

    Служба MSFTESQL не существует в SQL Server 2008 и более поздних версиях. Полнотекстовые задачи, которые выполнялись службой MSFTESQL в SQL Server 2005 и более ранних версиях, теперь выполняются процессом SQL Server.

  • Процесс узла управляющей программы фильтрации (fdhost.exe).

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

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

    Программа fdhost.exe заменяет собой управляющую программу фильтрации для полнотекстового поиска (msftefd.exe), имевшуюся в SQL Server 2005 и более ранних версиях.

    Процессы fdhost.exe создаются службой запуска FDHOST (MSSQLFDLauncher) и выполняются под учетными данными безопасности учетной записи службы запуска FDHOST. Следовательно, чтобы работали полнотекстовое индексирование и выполнялись полнотекстовые запросы, эта служба должна быть запущена. Сведения о настройке учетной записи службы см. в разделе Как задать учетную запись службы FDHOST Launcher (MSSQLFDLauncher) для средств полнотекстового поиска (диспетчер конфигурации SQL Server).

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

архитектура полнотекстового поиска

Процесс SQL Server

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

  • Пользовательские таблицы.

    В этих таблицах содержатся данные, по которым осуществляется полнотекстовое индексирование.

  • Средство сбора полнотекстовых данных

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

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

    Начиная с версии SQL Server 2008 полнотекстовый каталог является виртуальным объектом и не входит в файловую группу. Полнотекстовый каталог — это логическое понятие, обозначающее группу полнотекстовых индексов.

  • Файлы тезауруса

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

  • Объекты списка стоп-слов

    Объекты списка стоп-слов содержат список часто встречающихся слов, бесполезных при поиске. Дополнительные сведения см. в разделе Стоп-слова и списки стоп-слов.

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

    Объекты списка стоп-слов заменяют файлы пропускаемых слов SQL Server 2005 и более ранних версий.

  • Обработчик запросов SQL Server.

    Обработчик запросов компилирует и выполняет SQL-запросы. Если SQL-запрос включает запрос полнотекстового поиска, то запрос направляется в средство полнотекстового поиска как в процессе компиляции, так и при выполнении. Результат запроса сопоставляется с полнотекстовым индексом. Дополнительные сведения см. в разделе Средство полнотекстового поиска.

  • Средство полнотекстового поиска

    Средство полнотекстового поиска в SQL Server полностью интегрировано в обработчик запросов. Средство полнотекстового поиска компилирует и выполняет полнотекстовые запросы. Как часть выполнения запроса средство полнотекстового поиска может получать входные данные из тезауруса и списка стоп-слов. В SQL Server 2008 и более поздних версиях средство полнотекстового поиска для SQL Server работает в обработчике запросов SQL Server.

  • Модуль записи индекса (индексатор)

    Модуль записи индекса строит структуру, используемую для хранения индексированных лексем.

  • Диспетчер управляющей программы фильтрации

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

Узел управляющей программы фильтрации

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

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

  • Обработчик протокола.

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

  • Фильтры.

    Для некоторых типов данных требуется фильтрация перед полнотекстовой индексацией данных в документе, в том числе для данных в столбцах varbinary, varbinary(max), image или xml. Фильтр, используемый для данного документа, зависит от типа этого документа. Например, для документов Microsoft Word (DOC), Microsoft Excel (XLS) и XML-документов (XML) используются разные фильтры. Затем фильтр выделяет из документа фрагменты данных, при этом удаляется внедренное форматирование, остается текст и, возможно, сведения о положении текста. Результатом является поток текстовых данных. Дополнительные сведения см. в разделе Фильтры полнотекстового поиска.

  • Средства разбиения по словам и парадигматические модули

    Работа средства разбиения по словам зависит от конкретного языка: компонент находит границы слов в соответствии с лексическими правилами данного языка (разбиение по словам). Каждое средство разбиения по словам связано с зависящим от языка компонентом парадигматического модуля, который спрягает глаголы и добавляет флексии. Во время индексирования узел управляющей программы фильтрации использует средство разбиения по словам и парадигматический модуль для выполнения лингвистического анализа текстовых данных из указанного столбца таблицы. Язык, связанный со столбцом таблицы в полнотекстовом индексе, определяет, какое средство разбиения по словам и какой парадигматический модуль будут использоваться для индексирования столбца. Дополнительные сведения см. в разделе Средства разбиения по словам и парадигматические модули.

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

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