PostgreSQL固有のルックアップ—Djangoドキュメント

提供:Dev Guides
< DjangoDjango/docs/3.2.x/ref/contrib/postgres/lookups
移動先:案内検索

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ルックアップは、ほとんどのユースケースで正常に実行されるはずです。 ただし、このフィルターを使用するクエリは通常、全表スキャンを実行するため、大きなテーブルでは速度が低下する可能性があります。 そのような場合は、専用の全文索引付けツールを使用するのが適切な場合があります。