小编Tom*_*mek的帖子

Postgres 全文搜索,带有重音和屈折(共轭等)

我希望能够在 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)

postgresql full-text-search unaccent

5
推荐指数
1
解决办法
2856
查看次数

标签 统计

full-text-search ×1

postgresql ×1

unaccent ×1