Поиск, специфичный для 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/5.0/ref/contrib/postgres/lookups/