gpt4 book ai didi

PostgreSQL 重音 + 不区分大小写的搜索

转载 作者:行者123 更新时间:2023-11-29 11:39:37 28 4
gpt4 key购买 nike

我正在寻找一种方法来支持不区分大小写 + 重音不区分搜索的良好性能。到目前为止,我们在使用 MSSql 服务器时没有遇到任何问题,在 Oracle 上我们必须使用 OracleText,而现在我们在 PostgreSQL 上需要它。

我找到了 this post关于它,但我们需要将它与不区分大小写结合起来。我们还需要使用索引,否则性能可能会受到影响。关于大型数据库的最佳方法的任何实际经验?

最佳答案

如果您需要“不区分大小写”,有多种选择,具体取决于您的具体要求。

也许最简单,使表达式索引不区分大小写。

以引用答案中列出的函数 f_unaccent() 为基础:

CREATE INDEX users_lower_unaccent_name_idx ON users(<b>lower(</b>f_unaccent(name)<b>)</b>);

然后:

SELECT *
FROM users
WHERE lower(f_unaccent(name)) = lower(f_unaccent('João'));

或者您可以将 lower() 构建到函数 f_unaccent() 中,以派生类似 f_lower_unaccent().

或者(特别是如果您无论如何都需要进行模糊模式匹配)您可以使用附加模块提供的三元组索引 pg_trgm基于上述功能,它还支持 ILIKE。详情:

我在 referenced answer 中添加了注释.

或者可以使用额外的模块citext (但我宁愿避免它):

关于PostgreSQL 重音 + 不区分大小写的搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28627951/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com