Поддержка многоязычных функций в компоненте Full-Text Search

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

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

Другой фактор, который следует учитывать при выборе языка, связан со способом представления данных. Для данных, хранящихся в столбцах, отличных от столбца varbinary(max), специальная фильтрация не выполняется. Вместо этого текст обычно пропускается через компонент разбиения по словам «как есть». Средства разбиения по словам разработаны преимущественно для обработки письменного текста. Поэтому, если в тексте содержится какая-либо разметка (например, HTML), точность индексирования и поиска может оказаться невысокой. В этом случае есть два варианта. Лучше всего просто сохранить текстовые данные в столбце varbinary(max) и указать его тип документа, чтобы столбец можно было отфильтровать. Если это неприемлемо, то можно попытаться использовать нейтральное средство разбиения по словам и, если возможно, добавить элементы разметки (например, тег 'br' в языке HTML) в список неучитываемых слов.

ms142507.note(ru-ru,SQL.90).gifПримечание.
При использовании нейтрального языка лемматизация по языковым правилам не работает.

Поддержка языков

Microsoft SQL Server 2005 позволяет использовать в запросах полнотекстового поиска языки, отличные от заданного для столбца языка по умолчанию. Если язык поддерживается и соответствующие ему ресурсы установлены, то при разбиении на слова, лемматизации, а также при обработке тезауруса и неучитываемых слов будет использован язык, указанный в предложении LANGUAGE language_term запроса CONTAINS, CONTAINSTABLE, FREETEXT или FREETEXTTABLE.

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

Код языка для параметров сортировки в Юникоде Язык, на котором хранятся данные полнотекстовых индексов

Китайский язык — вариант «bopomofo» (Тайвань)

Китайский (традиционный)

Китайская пунктуация

Китайский (упрощенный)

Китайский язык — число черт иероглифов

Китайский (упрощенный)

Китайский язык (Тайвань) — число черт иероглифов

Китайский (традиционный)

Нидерландский

Нидерландский

Английский (Великобритания)

Английский (Великобритания)

Французский

Французский

Общий формат Юникод

Английский (США)

Немецкий

Немецкий

Немецкий язык — телефонная книга

Немецкий

Итальянский

Итальянский

Японский

Японский

Японский (Юникод)

Японский

Корейский

Корейский

Корейский язык (Юникод)

Корейский

Испанский (Испания)

Испанский

Шведский и финский

Шведский

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

ms142507.note(ru-ru,SQL.90).gifПримечание.
Код языка для параметров сортировки в Юникоде используется для всех типов данных, допускающих полнотекстовое индексирование (таких как char, nchar и т. д.). Если порядку сортировки столбца типа char, varchar или text назначен язык, отличный от кода языка для параметров сортировки в Юникоде, то при выполнении полнотекстового индексирования и полнотекстовых запросов столбцов этих типов все равно используется код языка согласно параметрам сортировки в Юникоде.

См. также

Другие ресурсы

Основные понятия компонента Full-Text Search
Типы данных (Transact-SQL)
CONTAINS (Transact-SQL)
Функция CONTAINSTABLE (Transact-SQL)
FREETEXT (Transact-SQL)
FREETEXTTABLE (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005