Я согласен с ответом @jjanes. Вам необходимо передать результат вашего словаря synonym
в словарь simple
.
Вот результаты, если вы не передали результат в словарь simple
:
SELECT to_tsvector('my_synonym', 'Postgresql'), to_tsquery('my_synonym', 'pgsql');
to_tsvector | to_tsquery
-------------+------------
'pgsql':1 |
А вот результаты, если вы передадите его:
SELECT to_tsvector('my_synonym', 'Postgresql'), to_tsquery('my_synonym', 'pgsql');
to_tsvector | to_tsquery
-------------+------------
'pgsql':1 | 'pgsql'
Но есть другой подход на тот случай, если вы не хотите использовать другие словари, кроме synonym
, Вы можете использовать dict_xsyn
модуль contrib. Вот его документация: https://www.postgresql.org/docs/current/dict-xsyn.html
Просто сделайте следующее:
CREATE EXTENSION dict_xsyn;
ALTER TEXT SEARCH DICTIONARY xsyn(
RULES='xsyn_sample', KEEPORIG=false, MATCHSYNONYMS=true);
CREATE TEXT SEARCH CONFIGURATION xsyn(COPY='simple');
ALTER TEXT SEARCH CONFIGURATION xsyn
ALTER MAPPING FOR
asciiword, asciihword, hword_asciipart, word, hword, hword_part
WITH xsyn;
Здесь я не использую словарь simple
. Создание расширения dict_xsyn
также создает словарь xsyn
. Но это не создает конфигурацию, поэтому вам нужно создать соответствующую конфигурацию.
Вам также необходимо настроить словарь xsyn
с соответствующими параметрами или создать новый. Мой xsyn_sample.rules
файл:
supernova sn sne 1987a
postgresql pgsql
И вот результаты:
SELECT to_tsvector('xsyn', 'Postgresql'), to_tsquery('xsyn', 'pgsql');
to_tsvector | to_tsquery
-------------+------------
'pgsql':1 | 'pgsql'
SELECT to_tsvector('xsyn', 'Postgresql') @@ to_tsquery('xsyn', 'pgsql');
?column?
----------
t