小编Oli*_*r D的帖子

在AWS RDS Postgres上,如何使用词典和非重音全文搜索?

我想在AWS RDS上使用PostgreSQL 9.5.4,利用全文搜索,带停用词的词典,非重音全文搜索.

上下文:

打开'unaccent'后,即使我没有正确输入重音,这个全文(Json)查询也会找到'F(e-acute)vrier'

psql>select * from proto_model.product where to_tsvector((body ->> 'description')) @@ to_tsquery('Fevrier');
Run Code Online (Sandbox Code Playgroud)

使用英语词典,同样搜索"the","any","you"...将找不到任何内容,因为它们是英语词典中定义的"停用词"并被忽略.

问题:

在我当地的Postgres上,这根本不是问题.在托管AWS上,这是一个.AWS上的EC2 + Docker当然不是问题,但我现在专注于RDS Postgres.

在本地,默认值default_text_search_config(得到它psql>show all)是'pg_catalog.english',它使用英语词典和停用词.在RDS上,这是'pg_catalog.simple'.

1)在AWS中,我无法添加字典或修改字典,因为您需要您没有的文件系统访问权限.创建/更新字典AFAIK没有编程解决方案.

2)在AWS中,作为'postgres'用户或甚至可以创建的' rds_superuser ' ,我无法改变全局配置

psql>ALTER SYSTEM SET default_text_search_config = 'pg_catalog.english';
ERROR:  must be superuser to execute ALTER SYSTEM command
Run Code Online (Sandbox Code Playgroud)

此外,没有可以与新Postgres实例关联的RDS Postgres参数组,并且您无法添加缺失值!向'rds_superuser'(psql>grant all on schema public to ...)授予更多权限并没有帮助.

3)在AWS中,作为'postgres'或'rds_superuser',我可以为我的会话设置当前文本配置

psql>set default_text_search_config = 'pg_catalog.english'; 
SET
Run Code Online (Sandbox Code Playgroud)

4)遗憾的是,在AWS中,作为'postgres'或'rds_superuser',我无法改变搜索配置(全局)以忽略重音.这在当地工作正常.

psql>ALTER TEXT SEARCH CONFIGURATION english ALTER MAPPING FOR hword, hword_part, word WITH unaccent, english_stem;
ERROR:  must …
Run Code Online (Sandbox Code Playgroud)

postgresql amazon-rds

11
推荐指数
2
解决办法
1681
查看次数

标签 统计

amazon-rds ×1

postgresql ×1