【发布时间】:2017-08-08 12:07:26
【问题描述】:
我在使用 PostgreSQL 对包含西班牙字符“Ñ”的文本进行全文搜索时遇到问题
当我尝试标记西班牙语单词“AÑO”(年份)时,根据输入是大写还是小写,我得到以下结果:
SELECT to_tsvector('spanish','AÑO'),to_tsquery('spanish','año')
"to_tsvector" "to_tsquery"
"'aÑo':1" "'año'"
如您所见,结果不一样并且区分大小写,因此如果包含此字符,我的应用程序全文搜索查询会区分大小写。
有什么办法可以解决这个问题吗?我一直在搜索有关全文搜索的 PostgreSQL 文档,但我不知道如何在已安装的字典上更改此行为。
非常感谢。 马蒂
【问题讨论】:
-
你的
client_encoding是什么?..和服务器一?..t=# SELECT to_tsvector('spanish','AÑO'),to_tsvector('spanish','año'); to_tsvector | to_tsvector -------------+------------- 'año':1 | 'año':1 (1 row) Time: 69.873 ms t=# show client_encoding; client_encoding ----------------- UTF8 (1 row)不能用UTF8重现 -
我的客户端和服务器编码是UTF8。
-
我的数据库参数是: CREATE DATABASE cda_repository WITH OWNER = cda_repository_owner ENCODING = 'UTF8' TABLESPACE = cda_repository_fast_ts LC_COLLATE = 'C' LC_CTYPE = 'C' CONNECTION LIMIT = -1; ALTER DATABASE cda_repository SET default_text_search_config = 'pg_catalog.spanish';非常感谢
-
请阅读丹尼尔的精彩回答
标签: postgresql full-text-search