Spec-Zone.ru › Django 1.10

Поиск, специфичный для PostgreSQL

Сходство триграмм

Новое в Django 1.10.

Использование 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/1.10/ref/contrib/postgres/lookups/

Spec-Zone.ru

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