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


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

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

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

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

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

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

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

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

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

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

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

SELECT * FROM sys.fulltext_languages

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

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

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

EXEC sp_help_fulltext_system_components 'wordbreaker';  
GO  

Дополнительные сведения и дополнительные сведения см. в sp_help_fulltext_system_components (Transact-SQL).

Что если добавить или удалить средство разбиения по словам

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

Устранение ошибок времени ожидания для критических слов

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

См. также

CREATE FULLTEXT INDEX (Transact-SQL)
ALTER FULLTEXT INDEX (Transact-SQL)
Настройка стоп-слов, списков стоп-слов и управление ими для полнотекстового поиска