在PostgreSQL中,我有一个带有同义词词典的文本搜索配置,然后我使用了english_stem文件。问题是,例如,我将“tv”这个词作为“电视”的同义词。因此,当我输入:
SELECT to_tsvector('my_config', 'tv') returns 'television':1
然而
SELECT to_tsvector('my_config', 'television') returns 'televis':1
因此,我们看到在单词被传递到同义词词典后,词干词典忽略了它。
我的文本搜索配置写为:
ALTER TEXT SEARCH CONFIGURATION test_config
ALTER MAPPING FOR asciiword, word, hword, asciihword
WITH syn_file, english_stem
主要问题是我的搜索然后没有给出同义词的结果。
答案 0 :(得分:0)
有两种解决方案:
电视电视
您可以使用thesaurus dictionary:
代替同义词词典tv:television
CREATE TEXT SEARCH DICTIONARY en_ths (
Template = thesaurus,
DictFile = mythesaurus,
Dictionary = pg_catalog.english_stem);
CREATE TEXT SEARCH CONFIGURATION en_ths(COPY='simple');
ALTER TEXT SEARCH CONFIGURATION en_ths
ALTER MAPPING FOR asciiword, asciihword, hword_asciipart,
word, hword, hword_part
WITH en_ths, english_stem;
现在你可以测试一下:
test=# SELECT to_tsvector('en_ths', 'tv');
to_tsvector
-------------
'televis':1
(1 row)
test=# SELECT to_tsvector('en_ths', 'television');
to_tsvector
-------------
'televis':1
(1 row)