PostgreSQL 特定查找 — Django 文档

来自菜鸟教程
Django/docs/3.2.x/ref/contrib/postgres/lookups
跳转至:导航、​搜索

PostgreSQL 特定的查找

三元组相似度

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

要使用它,请在 :setting:`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 实现的,因此它可以与其他查找函数链接。 要使用它,您需要在 :setting:`INSTALLED_APPS` 中添加 'django.contrib.postgres' 并激活 PostgreSQL 上的 unaccent 扩展。 如果要使用迁移执行此激活,则可以使用 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 查找在大多数用例中应该表现良好。 但是,使用此过滤器的查询通常会执行全表扫描,这在大型表上可能会很慢。 在这些情况下,使用专用的全文索引工具可能是合适的。