Spec-Zone.ru › Django 6.0

Специфичные для 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/

Spec-Zone.ru

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