Конфигурация тезауруса

В SQL Server полнотекстовые запросы могут выполнять поиск синонимов для заданных пользователем терминов с помощью тезауруса. Тезаурус в SQL Server определяет набор синонимов для указанного языка. Системный администратор может определить две формы синонимов: расширяющие наборы и заменяющие наборы. Подготовив тезаурус, ориентированный на пользовательские полнотекстовые данные, можно эффективно расширить область полнотекстовых запросов к этим данным. Сопоставление с тезаурусом выполняется только для запросов CONTAINS и CONTAINSTABLE, которые указывают предложение FORMSOF THESAURUS, и для запросов FREETEXT и FREETEXTABLE.

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

  • Настройка диакритических знаков

    Для заданного тезауруса все шаблоны поиска могут учитывать или не учитывать диакритические знаки, такие как тильда (~), акут (ґ) или умляут (Ё). Такие шаблоны соответственно называются шаблонами с учетом диакритических знаков или шаблонами без учета диакритических знаков). Например, предположим, что в запросе полнотекстового поиска необходимо заменить шаблон «cafй» другими шаблонами. Если тезаурус не учитывает диакритические знаки, то полнотекстовый поиск замещает шаблоны «cafй» и «cafe». Если файл тезауруса учитывает диакритические знаки, то полнотекстовый поиск замещает только шаблон «cafй». По умолчанию тезаурус не учитывает диакритические знаки.

    ПримечаниеПримечание

    Сведения о диакритических знаках см. в разделе Диакритический знак в энциклопедии MSN Encarta.

  • Расширяющий набор

    Расширяющий набор содержит группу синонимов, таких как «писатель», «автор» и «журналист», которые заменяют друг друга в полнотекстовом наборе. Запросы, содержащие слова, которые совпадают с одним из синонимов в расширяющем наборе, расширяются таким образом, чтобы включать в себя все другие синонимы в этом расширяющем наборе.

    Дополнительные сведения см. в подразделе «XML-структура расширяющего набора» далее в этом разделе.

  • Заменяющий набор

    Заменяющий набор содержит текстовый шаблон, заменяемый подстановочным набором. Пример см. в подразделе «XML-структура заменяющего набора» далее в этом разделе.

ПримечаниеПримечание

Сведения об ограничениях и рекомендациях файла тезауруса см. в разделе Как изменить файл тезауруса (компонент Full-Text Search).

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

В этом разделе содержатся сведения, которые помогут довести до конца эту задачу.

  • Исходное содержимое файлов тезауруса

  • Размещение файлов тезауруса

  • Использование файлов тезауруса запросами

  • Основные сведения о структуре файла тезауруса

  • Работа с файлами тезауруса

Исходное содержимое файлов тезауруса

Все файлы тезауруса, поставляемые с SQL Server 2008, содержат следующий XML-код:

<XML ID="Microsoft Search Thesaurus">

<!--  Commented out

    <thesaurus xmlns="x-schema:tsSchema.xml">
<diacritics_sensitive>0</diacritics_sensitive>
        <expansion>
            <sub>Internet Explorer</sub>
            <sub>IE</sub>
            <sub>IE5</sub>
        </expansion>
        <replacement>
            <pat>NT5</pat>
            <pat>W2K</pat>
            <sub>Windows 2000</sub>
        </replacement>
        <expansion>
            <sub>run</sub>
            <sub>jog</sub>
        </expansion>
    </thesaurus>
-->
</XML>

[В начало]

Размещение файлов тезауруса

Местоположение файлов тезауруса по умолчанию:

<SQL_Server_data_files_path>\MSSQL10_50.MSSQLSERVER\MSSQL\FTDATA\

В местоположении по умолчанию содержатся следующие файлы.

  • Зависящие от языка файлы тезауруса

    При установке в указанном выше месте устанавливаются пустые файлы тезауруса. Для каждого поддерживаемого языка предоставляется отдельный файл. Системный администратор может настроить эти файлы.

    Имена файлов по умолчанию для файлов тезауруса имеют следующий формат:

    ‘ts’ + <трехбуквенное_сокращенное_наименование_языка> + '.xml'

    Имя файла тезауруса для данного языка указывается в следующем параметре реестра: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<имя-экземпляра>\MSSearch\<аббревиатура-языка>.

  • Файл глобального тезауруса

    Пустой файл глобального тезауруса, tsGlobal.xml.

Можно менять местонахождение и имена файлов тезауруса, изменяя соответствующий раздел реестра. Для каждого языка местонахождение файла тезауруса указывается в следующем параметре реестра:

HKLM/SOFTWARE/Microsoft/Microsoft SQL Server/<имя-экземпляра>/MSSearch/Language/<аббревиатура-языка>/TsaurusFile

Файл глобального тезауруса соответствует языку «Нейтральный» с кодом языка (LCID) 0. Это значение может быть изменено только администратором.

[В начало]

Использование файлов тезауруса запросами

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

[В начало]

Основные сведения о структуре файла тезауруса

Каждый файл тезауруса определяет XML-контейнер, идентификатор которого — Microsoft Search Thesaurus, и комментарий, <!-- … -->, который содержит образец тезауруса. Тезаурус определен в элементе <thesaurus>, который содержит образцы дочерних элементов, определяющих настройку диакритических знаков, расширяющие наборы и заменяющие наборы следующим образом.

  • XML-структура настройки диакритических знаков

    Настройка диакритических знаков определяется в отдельном элементе <diacritics_sensitive>. Этот элемент содержит целое значение, которое управляет поведением диакритических знаков, как показано ниже.

    Настройка диакритических знаков

    Значение

    XML

    Не учитывать диакритические знаки

    0

    <diacritics_sensitive>0</diacritics_sensitive>

    С учетом диакритических знаков

    1

    <diacritics_sensitive>1</diacritics_sensitive>

    ПримечаниеПримечание

    Эту настройку можно применить для файла только единожды, и она применяется для всех шаблонов поиска в файле. Этот параметр невозможно указать для отдельных шаблонов.

  • XML-структура расширяющего набора

    Каждый расширяющий набор заключен в элемент <expansion>. Внутри этого элемента можно указать одну или несколько подстановок в элементе <sub>. В расширяющем наборе можно указать группу подстановок, являющихся синонимами.

    Например, можно изменить раздел расширения так, чтобы подстановки «писатель», «автор» и «журналист» считались синонимами. Полнотекстовые запросы, содержащие слова, совпадающие с одним из подстановочных слов, расширяются таким образом, чтобы включать в себя другие подстановочные слова в этом расширяющем наборе. Следовательно, в предыдущем примере при выполнении запроса FORMS OF THESAURUS или FREETEXT со словом «автор» после полнотекстового поиска будут также возвращены результаты, содержащие слова «писатель» и «журналист».

    Для этого примера раздел расширяющего набора должен выглядеть следующим образом:

     <expansion>
             <sub>writer</sub>
             <sub>author</sub>
             <sub>journalist</sub>
     </expansion>
    
  • XML-структура заменяющего набора

    Каждый заменяющий набор заключен в элемент <replacement>. Внутри этого элемента можно указать один или несколько шаблонов в элементе <pat> и ноль или более подстановок в элементах <sub>, по одному для синонима. Можно указать шаблон, заменяемый подстановочным набором. Шаблоны и подстановки могут содержать одно слово или последовательность слов. Если для шаблона не указано подстановки, то шаблон удаляется из запроса пользователя.

    Например, пусть необходимо заменить слово-шаблон «W2K» словами-подстановками «Windows 2000» или «XP». При выполнении полнотекстового запроса со словом «W2K» полнотекстовый поиск возвращает только результаты, содержащие слова «Windows 2000» или «XP». Результаты, содержащие слово «W2K», не возвращаются. Это происходит потому, что шаблон «W2K» заменен шаблонами «Windows 2000» и «XP».

    Для этого примера раздел заменяющего набора должен выглядеть следующим образом:

     <replacement>
             <pat>W2K</pat>
             <sub>Windows 2000</sub>
             <sub>XP</sub>
     </replacement>
    

    Если имеются два заменяющих набора с одинаковыми сравниваемыми шаблонами, приоритет имеет самый длинный из них. Например, если определены следующие заменяющие наборы, при выполнении запроса FORMS OF THESAURUS по фразе «сообщество Internet Explorer в сети», набор «Internet Explorer» имеет приоритет перед набором «Internet». Следовательно, запрос будет обрабатываться так, как будто он сформирован по фразам «сообщество IE в сети» или «сообщество IE 5 в сети».

    <replacement>
             <pat>Internet</pat>
             <sub>intranet</sub>
    </replacement>
    

    и

    <replacement>
             <pat>Internet Explorer</pat>
             <sub>IE</sub>
             <sub>IE 5</sub>
    </replacement>
    

[В начало]

Работа с файлами тезауруса

Изменение файла тезауруса

Загрузка обновленного файла тезауруса

Просмотр разметки, полученной в результате применения средства разбиения по словам, тезауруса и списка стоп-слов