我希望能够在 Postgres 中以屈折(波兰)语言搜索无重音的短语。
比如说,如果一个文档包含robi?em
,则词位应该是robi?
(infinivite)。它的形式有robi?
、robi?
、robi?a
等等。例如,我希望能够找到它,robie
其中包含一个不带重音的短语robi?
。
我所做的是从一个运行良好的波兰语文本搜索配置开始
CREATE TEXT SEARCH DICTIONARY polish_ispell (
TEMPLATE = pg_catalog.ispell,
dictfile = 'polish', afffile = 'polish', stopwords = 'polish' );
Run Code Online (Sandbox Code Playgroud)
然后我尝试扩展它以包含unaccent
.
create extension unaccent;
create text search configuration polish_unaccented (copy = polish);
ALTER TEXT SEARCH CONFIGURATION polish_unaccented ALTER MAPPING FOR hword,
hword_part, word WITH unaccen, polish_ispell, simple, ;
Run Code Online (Sandbox Code Playgroud)
遗憾的是,使用此配置无法正确创建词法:
select to_tsvector('polish_unaccented' ,'robi?');
'robil':1
Run Code Online (Sandbox Code Playgroud)
词素当然应该是:
'robi?':1
Run Code Online (Sandbox Code Playgroud)
所以下面不能返回true(这就是我认为我需要的):
select to_tsvector('polish_unaccented','robi?') @@ …
Run Code Online (Sandbox Code Playgroud)