使用trigram_similar
查找可以使用专用的PostgreSQL扩展来执行三角形查找,测量共享的三角形(三个连续字符)的数量。 给三元组查询给出一个表达式,并返回具有大于当前相似性阈值的相似性度量的结果。
要使用它,在INSTALLED_APPS
中添加'django.contrib.postgres'
,并激活PostgreSQL上的pg_trgm扩展名。 您可以使用TrigramExtension
迁移操作来安装扩展。
可以在CharField
和TextField
上使用trigram_similar
查找:
>>> City.objects.filter(name__trigram_similar="Middlesborough")
['<City: Middlesbrough>']
Unaccent
¶unaccent
查找允许您使用专用的PostgreSQL扩展执行重音不敏感的查找。
此查找使用Transform
实现,因此可以使用其他查找函数链接。 要使用它,您需要在INSTALLED_APPS
中添加'django.contrib.postgres'
并激活PostgreSQL上的不再扩展。 如果要使用迁移执行此激活,则可以使用UnaccentExtension
迁移操作。
可以在CharField
和TextField
上使用unaccent
查找:
>>> 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
查找在大多数使用情况下应该执行得很好。 但是,使用此过滤器的查询通常会执行全表扫描,这在大表上可能很慢。 在这些情况下,使用专用的全文索引工具可能是合适的。
2017年9月6日