PostgreSQL-специфичные поиски
Сходство триграмм
Поиск trigram_similar позволяет выполнять поиск по триграммам, определяя количество общих триграмм (три последовательных символа) с помощью специализированного расширения PostgreSQL. Поиск по триграммам получает выражение и возвращает результаты, имеющие показатель сходства, превышающий текущий порог сходства.
Для использования добавьте 'django.contrib.postgres' в ваш INSTALLED_APPS и активируйте расширение pg_trgm в PostgreSQL. Вы можете установить расширение, используя операцию миграции TrigramExtension.
Поиск trigram_similar может использоваться с CharField и TextField:
>>> City.objects.filter(name__trigram_similar="Middlesborough") ['<City: Middlesbrough>']
Unaccent
Поиск unaccent позволяет выполнять поиск, не учитывая знаки ударения, используя специализированное расширение PostgreSQL.
Этот поиск реализован с использованием Transform, поэтому его можно использовать в цепочках с другими функциями поиска. Для использования необходимо добавить 'django.contrib.postgres' в ваш INSTALLED_APPS и активировать расширение unaccent в PostgreSQL. Операция миграции 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 обычно работают корректно в большинстве случаев. Однако запросы с этим фильтром, как правило, выполняют полные сканирования таблицы, что может быть медленным для больших таблиц. В таких случаях может быть уместно использовать специализированные инструменты полнотекстового индексирования.
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/2.1/ref/contrib/postgres/lookups/