Настройка и управление средствами разбиения слов и стеммерами

Область применения:SQL ServerБаза данных SQL AzureУправляемый экземпляр SQL Azure

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

  • Поиск границ слов (разделение слов). Средство разбиения по словам определяет отдельные слова, определяя, где находятся границы слов, на основании лексических правил языка. Каждое слово (называемое также токеном) вставляется в полнотекстовый индекс с использованием сжатого представления для уменьшения его размера.

  • Спряжение глаголов (стемминг). Стеммер создает словоформы определенного слова на основании правил этого языка (например, "бегущий", "бегал" и "бегун" являются различными формами слова "бежать").

Модулы разбиения слов и стеммеры зависят от языка

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

Чтобы использовать средства разбиения слов и стеммеры, доступные для всех языков, поддерживаемых ядром СУБД SQL Server, обычно не требуется никаких действий.

  • Где существует средство разбиения слов для семейства языков, но не для конкретного подъязыка, используется основной. Например, для обработки франко-канадского текста используется средство разбиения по словам для французского языка.

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

Получение списка поддерживаемых языков

Чтобы увидеть список языков, поддерживаемых Full-Text Search, используйте следующий оператор Transact-SQL. Наличие языка в этом списке указывает на то, что средства разбиения на слова зарегистрированы для данного языка.

SELECT *
FROM sys.fulltext_languages;

Получение списка зарегистрированных средств разбиения слов

Чтобы использовать в полнотекстовом поиске средства разбиения по словам для языка, их необходимо зарегистрировать. Для зарегистрированных средств разбиения слов также становятся доступны связанные с ними лингвистические ресурсы для полнотекстовой индексации и обработки запросов. К этим ресурсам относятся стеммеры, шумовые слова (стопворды) и файлы тезауруса.

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

EXECUTE sp_help_fulltext_system_components 'wordbreaker';
GO

Дополнительные сведения см. в sp_help_fulltext_system_components.

Если добавить или удалить разделитель слов

При добавлении, удалении или изменении средства разбиения по словам следует обновить список кодов локалей, поддерживаемых в Microsoft Windows для полнотекстового индексирования и для выполнения запросов. Дополнительные сведения см. в разделе "Настройка фильтров и разбиений слов".

Установка параметра полнотекстового языка по умолчанию

Для локализованной версии SQL Server программа установки SQL Server устанавливает параметр полнотекстового языка по умолчанию на язык сервера, если существует соответствующее совпадение. Для не локализованной версии SQL Server параметр полнотекстового языка по умолчанию — английский.

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

Примечание.

Все столбцы, перечисленные в одном предложении функции полнотекстового запроса, должны использовать один и тот же язык, если LANGUAGE параметр не указан в запросе. Язык столбца с полнотекстовым индексированием, к которому выполняется запрос, определяет правила лингвистического анализа для аргументов предикатов полнотекстового запроса (CONTAINS и FREETEXT) и функций (CONTAINSTABLE и FREETEXTTABLE).

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

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

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

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

SELECT language_id AS 'LCID'
FROM sys.fulltext_index_columns;

Дополнительные сведения см. sys.fulltext_index_columns.

Устранение неполадок ошибок тайм-аута из-за разрыва слов

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

Информация об ошибке MSSQLSERVER_30053

Свойство Значение
Название продукта SQL Server
ИД события 30053
Источник событий MSSQLSERVER
Компонент SQLEngine
Символическое имя FTXT_QUERY_E_WORDBREAKINGTIMEOUT
Текст сообщения Истекло время ожидания при выполнении разбиения по словам для строки полнотекстового запроса. Это может произойти в том случае, если средство разбиения по словам слишком долго обрабатывало строку полнотекстового запроса либо если на сервере одновременно выполняется большое количество запросов. Попробуйте выполнить запрос еще раз при меньшей загрузке сервера.

Описание

Ошибка времени ожидания при разбиении по словам может случаться в следующих ситуациях.

  • Неправильно настроено средство разбиения по словам для языка запросов. Например, настройки реестра некорректны.

  • Средство разбиения по словам неправильно обрабатывает определенную строку запроса.

  • Разбиватель слов возвращает слишком много данных для конкретной строки запроса. Избыточные данные рассматриваются как потенциальная попытка переполнения буфера и приводят к завершению работы процесса демона фильтра (fdhost.exe), в котором размещаются службы разбиения слов.

  • Конфигурация процесса демона фильтрации неверна.

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

  • В экземпляре сервера выполняется очень интенсивная нагрузка запросов. Например, средство разбиения слов долго обрабатывало строку полнотекстового запроса, либо на сервере выполняется большое количество запросов. Это наименее вероятное причина.

Действие пользователя

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

Возможные причины Действие пользователя
Неправильно настроено средство разбиения по словам для языка запросов. Если вы используете стороннее средство разбиения слов, возможно, оно неправильно зарегистрировано в операционной системе. Повторно зарегистрируйте компонент разбиения слов. Дополнительные сведения см. в разделе Возврат средств разбиения слов, используемых Full-Text Search, к предыдущей версии.
Средство разбиения по словам неправильно обрабатывает определенную строку запроса. Если средство разбиения слов поддерживается компонентом ядро СУБД, обратитесь в службу поддержки клиентов Майкрософт.
Разбиватель слов возвращает слишком много данных для конкретной строки запроса. Если средство разбиения слов поддерживается компонентом ядро СУБД, обратитесь в службу поддержки клиентов Майкрософт.
Конфигурация процесса демона фильтрации неверна. Убедитесь, что вы используете текущий пароль и что политика домена не препятствует входу учетной записи управляющей программы фильтра.
В экземпляре сервера выполняется очень интенсивная нагрузка запросов. Попробуйте выполнить запрос еще раз при меньшей загрузке сервера.

Общие сведения о влиянии обновленных средств разбиения по словам

Каждая версия ядро СУБД может включать обновлённые разрыватели слов с пересмотренными лингвистическими правилами. Эти обновленные средства разбиения слов могут работать иначе, чем средства разбиения слов в полнотекстовых индексах, импортированных из предыдущих версий компонента ядро СУБД.

Это важно, если при обновлении базы данных до текущей версии ядро СУБД был импортирован полнотекстовый каталог. Один или несколько языков, используемых полнотекстовыми индексами в полнотекстовом каталоге, могут быть связаны с новыми средствами разбиения по словам. Дополнительные сведения см. в разделе Обновление полнотекстового поиска.