【发布时间】:2017-10-14 16:11:46
【问题描述】:
我想要的是相当于在 MySQL 中使用utf8_unicode_ci。因此,如果我有这些字符串(使用 Postgresql 的默认排序顺序):
- 谷仓
- 气泡
- 博夫
- 牛肉
- 肉丸
- bémol
我希望它们能像这样排序(就像 MySQL 中的 utf8_unicode_ci 一样):
- 谷仓
- 牛肉
- bémol
- 博夫
- 肉丸
- 气泡
这种排序不区分大小写,不区分重音,并且连字会转换为多个字符。
我知道 Postgresql 中的 unaccent 和 lower,但我不知道如何在 Django 中使用它们。
使用 Django/Postgresql 的可能解决方案:
- 添加新列仅用于对数据进行规范化(较低、不重音)进行排序。
- 添加索引 (like in this answer),但我不确定它如何与 Django 一起使用?
我不认为全文搜索或 Trigram 在这里可以帮助我,因为我不一定要根据文本进行搜索,但我需要获得良好的排序顺序。
理想情况下,查询应该很快,因此使用另一个索引列看起来是一个不错的途径。但我希望找到一个解决方案,我不需要为我的数据库中的每个现有文本列实施,易于维护等。是否有最佳实践来做到这一点?
【问题讨论】:
标签: django postgresql sorting