dict_xsyn

Дополнительный шаблон словаря для полнотекстового поиска.
Схема размещения: ext.
dict_xsyn – Extended Synonym Dictionary, расширенный словарь синонимов.
Модуль представляет собой пример дополнительного шаблона словаря для полнотекстового поиска. Этот словарь заменяет слова группами их синонимов, что позволяет находить слово по одному из его синонимов.
Параметры словаря:
ПараметрЗначение по умолчаниюОписание
matchorig
trueОпределяет, будет ли словарь принимать изначальное слово
matchsynonyms
falseОпределяет, будет ли словарь принимать синонимы
keeporig
trueОпределяет, будет ли исходное слово включаться в вывод словаря
keepsynonyms
trueОпределяет, будут ли в вывод словаря включаться синонимы
rules
Задает базовое имя файла со списком синонимов. Этот файл должен находиться в каталоге $SHAREDIR/tsearch_data/. Под $SHAREDIR понимается каталог с общими данными инсталляции PostgreSQL. Часто он расположен в каталоге $PGHOME/share/. Имя файла должно заканчиваться расширением .rules. Расширение не нужно указывать в параметре rules)
Файл правил (параметр rules) имеет следующий формат:
  • каждая строка представляет группу синонимов для одного слова, которое задается первым в этой строке:
    word synw1 synw2 synw3
  • символ решетки (#) обозначает начало комментария и может находиться в любом месте строки; следующая за ним часть строки игнорируется.
Пример словаря можно найти в файле $PGHOME/share/tsearch_data/xsyn_sample.rules:
Раскрыть type=yaml
# Sample rules file for eXtended Synonym (xsyn) dictionary
# format is as follows:
#
# word synonym1 synonym2 ...
#
supernova sn sne 1987a

Использование модуля

При установке расширения dict_xsyn в базе создается шаблон текстового поиска xsyn_template и на его основе словарь xsyn. Параметры установлены по умолчанию. Можно изменить параметры словаря или создать новые словари на базе этого шаблона.
Примеры:
  • Создать файл $PGHOME/share/tsearch_data/my_rules.rules с текстом:
    my_new_word synon1 synn2 syncr3 sample4 #Пример словаря
  • Запрос на изменение параметров без вывода исходного слова:
    ALTER TEXT SEARCH DICTIONARY ext.xsyn (RULES='my_rules', KEEPORIG=false);
    Результат выполнения:
    ALTER TEXT SEARCH DICTIONARY
  • Проверка словаря:
    SELECT ts_lexize('ext.xsyn', 'my_new_word');
    Результат выполнения:
    Раскрыть type=sql
               ts_lexize
    -------------------------------
     {synon1,synn2,syncr3,sample4}
    (1 row)
    
  • Запрос на изменение параметров с выводом исходного слова:
    ALTER TEXT SEARCH DICTIONARY ext.xsyn (RULES='my_rules', KEEPORIG=true);
    Результат выполнения:
    ALTER TEXT SEARCH DICTIONARY
  • Проверка словаря:
    SELECT ts_lexize('ext.xsyn', 'my_new_word');
    Результат выполнения:
    Раскрыть type=sql
               ts_lexize
    -------------------------------
     {my_new_word,synon1,synn2,syncr3,sample4}
    (1 row)
    
Для практического применения словарь нужно включить в конфигурацию текстового поиска. Это может выглядеть примерно так:
ALTER TEXT SEARCH CONFIGURATION english
    ALTER MAPPING FOR word, asciiword WITH xsyn, english_stem;

Ссылки на документацию разработчика

Дополнительную информацию по поставляемому модулю dict_xsyn можно получить по ссылке.
Предыдущий раздел
dict_int
Следующий раздел
earthdistance
Была ли страница полезной?