我为此配置创建了自定义配置和同义词。
这是我的synonym_custom.syn
文件内容
gate door
这些是创建脚本:
CREATE TEXT SEARCH CONFIGURATION icons (copy='english');
CREATE TEXT SEARCH DICTIONARY my_synonym (
TEMPLATE = synonym,
SYNONYMS = synonym_custom
);
ALTER TEXT SEARCH CONFIGURATION icons
ALTER MAPPING FOR asciiword, asciihword, hword_asciipart,
word, hword, hword_part
WITH my_synonym, english_stem;
现在,当我创建向量时,它不会为单词创建词法gates
postgres=# select to_tsvector('icons','door doors gate gates');
to_tsvector
-----------------------
'door':1,2,3 'gate':4
(1 row)
如您所见,它改变了单词door
,doors
and gate
,但不是gates
。相反,雪球算法工作gates
并创建了 lexem gate
。
如何强制 postgresql 传递同义词扔雪球算法的结果。我知道,同义词词典优先于雪球。作为一种解决方法,我可以将gate
单词的所有修改添加到synonym_custom.syn
中,但我有 3,500 个具有类似同义词的单词。因此,就我而言,这不是解决方案。