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=sqlts_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=sqlts_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 можно получить по ссылке.