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


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

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

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

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

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

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

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

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

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

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

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

Чтобы просмотреть список языков, поддерживаемых полнотекстовый поиск SQL Server, используйте следующую инструкцию 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), который поддерживает службы разбиения слов.

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

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

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

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

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

Возможные причины Действие пользователя
Неправильно настроено средство разбиения по словам для языка запросов. Если вы используете стороннее средство разбиения слов, возможно, оно неправильно зарегистрировано в операционной системе. Повторно зарегистрируйте компонент разбиения слов. Дополнительные сведения см. в разделе «Восстановление разбиения слов, используемого поиском, до предыдущей версии (поиск SQL Server)».
Средство разбиения по словам неправильно обрабатывает определенную строку запроса. Если средство разбиения слов поддерживается SQL Server, обратитесь в службу поддержки клиентов Майкрософт.
Разбиватель слов возвращает слишком много данных для конкретной строки запроса. Если средство разбиения слов поддерживается SQL Server, обратитесь в службу поддержки клиентов Майкрософт.
Конфигурация процесса демона фильтрации неверна. Убедитесь, что вы используете текущий пароль и что политика домена не препятствует входу учетной записи управляющей программы фильтра.
В экземпляре сервера выполняется очень интенсивная нагрузка запросов. Попробуйте выполнить запрос еще раз при меньшей загрузке сервера.

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

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

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