私が望むのは、MySQLでutf8_unicode_ci
を使用することに相当します。だから私は、これらの文字列(Postgresqlの持つデフォルトのソート順)がある場合:PostgreSQL 9.6でDjangoで大文字と小文字を区別する方法を区別しませんか?
- を物置
- バブル
- ブッフ
- 牛肉
- boulette
- bémol
私は彼らを望みますこのようにソートされます(utf8_unicode_ci
、MySQLの場合):
- 物置
- 牛肉
- bémol
- ブッフ
- boulette
- バブル
ソートのこの種は大文字小文字を区別しない、アクセントを区別しないで、合字は、複数の文字に変換されます。
私はPostgreSQLで約unaccent
とlower
を知っていますが、私はDjangoからそれらをどのように使用するか分かりません。ジャンゴ/ Postgresqlのと
考えられる解決策:
- のみ(、下unaccent)正規化されたデータをソートするために新しい列を追加します。
- インデックス(like in this answer)を追加しますが、Djangoでどのように動作するのかよく分かりません。
私は必ずしもテキストの検索ベースではないので、フルテキスト検索やTrigramは私を助けてくれるとは思っていませんが、良いソート順を取得する必要があります。
理想的クエリが速いので、別のインデックス付きの列を使用しなければならないことは良い道のように見えます。しかし、私はDB内の既存のテキスト列ごとに実装する必要のないソリューションを見つけたいと思っています。これは簡単に維持することができます。そうするベストプラクティスはありますか?これは、Django自体とは関係ありません
私の知る限り、PostgreSQLでは、必要な並べ替えを行う照合はありません。あなたが私を間違っていると証明できるなら、私は幸せになるでしょう! – Etienne
@Etienne私は答えにテストケースを追加しました。 –
私はあなたのテストケースを試して、両方の 'SELECT'は同じソート順を与えます。しかし、私は古いOS Xシステム上にあり、数年前にこのシステムでこの問題が発生している可能性があることを覚えています。私は別のシステムでそれをテストして戻ってくるでしょう。ありがとう! – Etienne