FullTextSearch и русский язык
Чтобы проверить и настроить русский язык для полнотекстового поиска через SQL-скрипты, нужно сделать две вещи: проверить, зарегистрирован ли язык в системе, и убедиться, что он используется как язык по умолчанию или явно указан для столбцов индекса.
Вот подробная инструкция.
1. Проверка зарегистрированных языков
Для начала посмотрите, какие языки вообще зарегистрированы в вашем экземпляре SQL Server. Русский язык должен присутствовать в этом списке с кодом LCID 1049.
Выполните этот запрос:
SELECT * FROM sys.fulltext_languages;
Если русский язык (Russian) есть в списке — значит, его компоненты (разбивщики слов, стеммеры и т.д.) зарегистрированы. Если его нет, возможно, его нужно добавить вручную (об этом в конце).
2. Проверка языка по умолчанию
Этот параметр определяет, какой язык будет использоваться для столбцов полнотекстового индекса, если он не указан явно.
Выполните запрос, чтобы узнать текущее значение:
SELECT name, value, value_in_use, description FROM sys.configurations WHERE name = 'default full-text language';
Значения LCID для языков:
-
Русский:
1049 -
Английский (США):
1033
3. Установка русского языка по умолчанию
Если вы хотите, чтобы все новые полнотекстовые индексы в этом экземпляре по умолчанию использовали русский язык, выполните следующие скрипты:
-- 1. Включаем расширенные настройки EXEC sp_configure 'show advanced options', 1; RECONFIGURE; GO -- 2. Устанавливаем русский язык (LCID = 1049) EXEC sp_configure 'default full-text language', 1049; RECONFIGURE; GO
4. Проверка и изменение языка у существующего индекса
Важно! Настройка языка по умолчанию влияет только на новые индексы. Для существующего индекса язык уже зафиксирован на уровне каждого столбца.
Чтобы проверить, какой язык используется в вашем индексе, выполните этот запрос (замените 'Имя_вашей_таблицы' на реальное имя):
SELECT t.name AS TableName, c.name AS ColumnName, f.language_id AS LanguageLCID, f.language_term AS LanguageName FROM sys.fulltext_index_columns f INNER JOIN sys.columns c ON f.column_id = c.column_id AND f.object_id = c.object_id INNER JOIN sys.tables t ON f.object_id = t.object_id WHERE t.name = 'Имя_вашей_таблицы';
Если здесь указан не 1049 (Russian) или значение отличается от нужного, индекс нужно пересоздать, явно указав язык для столбца.
Пример пересоздания индекса с русским языком:
-- Удаляем старый индекс DROP FULLTEXT INDEX ON Имя_вашей_таблицы; GO -- Создаём новый с указанием русского языка для столбца CREATE FULLTEXT INDEX ON Имя_вашей_таблицы( Имя_столбца LANGUAGE 1049 -- или LANGUAGE Russian ) KEY INDEX Имя_первичного_ключа ON Имя_полнотекстового_каталога; GO
Альтернативный вариант установки - Таблица / Design / Столбец / Внизу настройки Fulltext / Меняем язык на русский. После этого надо сделать для индекса FullTextSearch операцию Rebuild
5. Что делать, если русского языка нет в sys.fulltext_languages?
Согласно документации, для русского языка компоненты нужно включать вручную. Обычно это означает, что нужно скачать и установить соответствующий языковой пакет для SQL Server.
Если русский язык отсутствует в списке, попробуйте обновить список зарегистрированных языков с помощью системной хранимой процедуры:
EXEC sp_fulltext_service 'update_languages';
После этого перезапустите службу SQL Server и проверьте список заново.
💎 Краткий алгоритм действий
-
Проверьте наличие:
SELECT * FROM sys.fulltext_languages; -
Если русского нет — обновите список:
EXEC sp_fulltext_service 'update_languages';и перезапустите службу. -
Проверьте язык по умолчанию:
SELECT * FROM sys.configurations WHERE name = 'default full-text language'; -
Если нужно — установите русский как язык по умолчанию:
EXEC sp_configure 'default full-text language', 1049; RECONFIGURE; -
Проверьте язык у существующего индекса (запрос из п. 4).
-
Если у индекса указан не русский язык — пересоздайте индекс, явно указав
LANGUAGE 1049илиLANGUAGE Russian.
Что еще посмотреть по SQL Server
Как создать пользователя SQL для выбранной базы данных через ManagementStudio
SQL. Как дать ограниченный доступ к внешней базе на том же сервере
Как обрезать лог базы данных SQL Server
Как создать логин SQL Server через скрипт SQL
SQL Server. Как посмотреть историю бекапов
Как отключить SQL Server телеметрию (sql telemetry service)
Как удалить лог ошибок SQL Server. Где хранится ErrorLog MS SQL
Дополнительный заработок для разработчиков на T-SQL
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта