Skip to main content

PostgreSQL特定的查找

三角相似性

New in Django 1.10.

trigram_similar 查找允许您使用专用的PostgreSQL扩展来执行三字母查找,测量共享的三字母(三个连续字符)的数量。三叉查找被给予表达式并且返回具有大于当前相似性阈值的相似性测量的结果。

要使用它,在您的 INSTALLED_APPS 中添加 'django.contrib.postgres' 并激活PostgreSQL上的 pg_trgm扩展。您可以使用 TrigramExtension 迁移操作安装扩展。

trigram_similar 查找可以用于 CharFieldTextField:

>>> City.objects.filter(name__trigram_similar="Middlesborough")
['<City: Middlesbrough>']

Unaccent

unaccent 查找允许您使用专用的PostgreSQL扩展来执行重音不敏感的查找。

此查找使用 Transform 实现,因此它可以与其他查找函数链接。要使用它,您需要在您的 INSTALLED_APPS 中添加 'django.contrib.postgres' 并激活 unaccent extension on PostgreSQL。如果要使用迁移执行此激活,则可以使用 UnaccentExtension 迁移操作。

unaccent 查找可以用于 CharFieldTextField:

>>> 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 查找应该在大多数使用情况下执行得很好。但是,使用此过滤器的查询通常会执行全表扫描,这在大表上可能很慢。在这些情况下,使用专用的全文索引工具可能是合适的。