PostgreSQL固有のルックアップ—Djangoドキュメント
PostgreSQL固有のルックアップ
トリグラムの類似性
trigram_similar
ルックアップを使用すると、専用のPostgreSQL拡張機能を使用して、共有されているトリグラム(3つの連続する文字)の数を測定して、トリグラムルックアップを実行できます。 トリグラムルックアップには式が与えられ、現在の類似性しきい値よりも大きい類似性測定値を持つ結果が返されます。
これを使用するには、:setting: `INSTALLED_APPS` に'django.contrib.postgres'
を追加し、PostgreSQLで pg_trgm拡張機能をアクティブにします。 TrigramExtension 移行操作を使用して拡張機能をインストールできます。
trigram_similar
ルックアップは、 CharField および TextField で使用できます。
>>> City.objects.filter(name__trigram_similar="Middlesborough")
['<City: Middlesbrough>']
Unaccent
unaccent
ルックアップを使用すると、専用のPostgreSQL拡張機能を使用してアクセントに依存しないルックアップを実行できます。
このルックアップは Transform を使用して実装されるため、他のルックアップ関数とチェーンすることができます。 これを使用するには、:setting: `INSTALLED_APPS` に'django.contrib.postgres'
を追加し、PostgreSQL で unaccent拡張機能をアクティブ化する必要があります。 UnaccentExtension 移行操作は、移行を使用してこのアクティブ化を実行する場合に使用できます)。
unaccent
ルックアップは、 CharField および TextField で使用できます。
>>> City.objects.filter(name__unaccent="México")
['<City: Mexico>']
>>> User.objects.filter(first_name__unaccent__startswith="Jerem")
['<User: Jeremy>', '<User: Jérémy>', '<User: Jérémie>', '<User: Jeremie>']
警告
unaccent
ルックアップは、ほとんどのユースケースで正常に実行されるはずです。 ただし、このフィルターを使用するクエリは通常、全表スキャンを実行するため、大きなテーブルでは速度が低下する可能性があります。 そのような場合は、専用の全文索引付けツールを使用するのが適切な場合があります。