Spec-Zone.ru › Django 5.1

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.1/ref/contrib/postgres/lookups/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API