PostgreSQL中简单字典生成的词素在从v.9升级到v.11后,对于非拉丁语言,其大小写不会降低

PostgreSQL中简单字典生成的词素在从v.9升级到v.11后,对于非拉丁语言,其大小写不会降低,postgresql,full-text-search,homebrew,collation,postgresql-11,Postgresql,Full Text Search,Homebrew,Collation,Postgresql 11,在我们的项目中,我们使用simpledictionary为不同语言(英语、德语、希腊语、乌克兰语等)使用PostgreSQL的全文搜索功能。在我的本地机器(macOS Mojave)上,我使用自制软件安装了PostgreSQL。在尝试将PostgreSQL从9.5.23版升级到11.10版(基本上我只是删除了旧版本并重新安装)之后,我注意到当我尝试使用to_tsvector函数将文本转换为tsvector数据类型时,当使用非拉丁语时,它停止了文本的小写。如果文本是基于拉丁语(ASCII)的,它仍

在我们的项目中,我们使用
simple
dictionary为不同语言(英语、德语、希腊语、乌克兰语等)使用PostgreSQL的全文搜索功能。在我的本地机器(macOS Mojave)上,我使用自制软件安装了PostgreSQL。在尝试将PostgreSQL从9.5.23版升级到11.10版(基本上我只是删除了旧版本并重新安装)之后,我注意到当我尝试使用
to_tsvector
函数将文本转换为
tsvector
数据类型时,当使用非拉丁语时,它停止了文本的小写。如果文本是基于拉丁语(ASCII)的,它仍然会降低文本的大小写。这个问题只是在我升级到版本11之后才出现的(在我从9.5.23过渡到10.15之后,它仍然像预期的那样工作)

示例(在版本11.10、12.5和13.1上):

这是以前的情况(版本9.5.23和10.15):

我试着阅读所有的发行说明,但我看不到任何与我的问题有关的东西。在报告中仍然指出

简单字典模板通过将输入标记转换为小写

所以我假设API本身没有变化

我怀疑在版本11中,他们更改了一些默认配置参数,这会影响到这一点,但我找不到任何有用的东西

更新: 在psqlshell中运行
\l
可以提供以下信息

# 11.10

    List of databases
        Name        |      Owner      | Encoding | Collate | Ctype |          Access privileges          
--------------------+-----------------+----------+---------+-------+-------------------------------------
 postgres           | dmytrosavochkin | UTF8     | C       | C     | 
 template0          | dmytrosavochkin | UTF8     | C       | C     | =c/dmytrosavochkin                 +
                    |                 |          |         |       | dmytrosavochkin=CTc/dmytrosavochkin
 template1          | dmytrosavochkin | UTF8     | C       | C     | =c/dmytrosavochkin                 +
                    |                 |          |         |       | 

# 9.5.23

     List of databases
        Name        |      Owner      | Encoding |   Collate   |    Ctype    |          Access privileges          
--------------------+-----------------+----------+-------------+-------------+-------------------------------------
 postgres           | dmytrosavochkin | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0          | dmytrosavochkin | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/dmytrosavochkin                 +
                    |                 |          |             |             | dmytrosavochkin=CTc/dmytrosavochkin
 template1          | dmytrosavochkin | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/dmytrosavochkin                 +
                    |                 |          |             |             | dmytrosavochkin=CTc/dmytrosavochkin


好的,谢谢你的评论,我明白了(谢谢!)

问题恰好出现在自制postgresql公式的设置中。基本上,当我安装的时候postgresql@9.5它正在运行
initdb/usr/local/var/postgresql@9.5
在引擎盖下初始化集群,但当我切换到11.10时,它正在运行
initdb--locale=C-E UTF-8/usr/local/var/postgresql@10
C
设置为默认区域设置,我没有注意到


为了解决这个问题,我通过
rm-rf/usr/local/var删除了初始数据/postgresql@12
然后使用
initdb--locale=en_US.UTF-8-E UTF-8/usr/local/var手动重新初始化/postgresql@12
。现在,所有数据库的默认对照是en_US.UTF-8,所有操作都与以前完全相同。

您能给出每个系统的区域设置信息吗?例如,
\l
SELECT to_tsvector('simple', 'Офісний Менеджер');
'менеджер':2 'офісний':1

SELECT to_tsvector('simple', 'Ελληνικά')
'ελληνικά':1

SELECT ts_lexize('simple', 'Менеджер');
{менеджер}

SELECT ts_lexize('simple', 'Manager');
{manager}
# 11.10

    List of databases
        Name        |      Owner      | Encoding | Collate | Ctype |          Access privileges          
--------------------+-----------------+----------+---------+-------+-------------------------------------
 postgres           | dmytrosavochkin | UTF8     | C       | C     | 
 template0          | dmytrosavochkin | UTF8     | C       | C     | =c/dmytrosavochkin                 +
                    |                 |          |         |       | dmytrosavochkin=CTc/dmytrosavochkin
 template1          | dmytrosavochkin | UTF8     | C       | C     | =c/dmytrosavochkin                 +
                    |                 |          |         |       | 

# 9.5.23

     List of databases
        Name        |      Owner      | Encoding |   Collate   |    Ctype    |          Access privileges          
--------------------+-----------------+----------+-------------+-------------+-------------------------------------
 postgres           | dmytrosavochkin | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0          | dmytrosavochkin | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/dmytrosavochkin                 +
                    |                 |          |             |             | dmytrosavochkin=CTc/dmytrosavochkin
 template1          | dmytrosavochkin | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/dmytrosavochkin                 +
                    |                 |          |             |             | dmytrosavochkin=CTc/dmytrosavochkin