Специфичные для PostgreSQL операции поиска
Триграммное сходство
trigram_similar
Операция поиска 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>']
trigram_word_similar
Операция поиска trigram_word_similar позволяет выполнять поиск по сходству слов на основе триграмм с помощью специального расширения PostgreSQL. Её можно приблизительно понимать как измерение наибольшего количества общих триграмм между параметром и любой подстрокой поля. В операции поиска слов по триграммам задаётся выражение, и она возвращает результаты, показатель сходства слов которых превышает текущий порог сходства.
Чтобы использовать эту операцию, добавьте 'django.contrib.postgres' в INSTALLED_APPS и активируйте расширение pg_trgm в PostgreSQL. Установить расширение можно с помощью операции миграции TrigramExtension.
Операцию поиска trigram_word_similar можно использовать с полями CharField и TextField:
>>> Sentence.objects.filter(name__trigram_word_similar="Middlesborough") ['<Sentence: Gumby rides on the path of Middlesbrough>']
trigram_strict_word_similar
Похожа на trigram_word_similar, но заставляет границы фрагментов совпадать с границами слов.
Чтобы использовать эту операцию, добавьте 'django.contrib.postgres' в INSTALLED_APPS и активируйте расширение pg_trgm в PostgreSQL. Установить расширение можно с помощью операции миграции TrigramExtension.
Операцию поиска trigram_strict_word_similar можно использовать с полями CharField и TextField.
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/6.0/ref/contrib/postgres/lookups/