СОВЕТ: ни одна функция не соответствует заданному имени и типу аргумента.Возможно, вам придется добавить явные приведения типов.ТриграммаСходство Джанго - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь выполнить полнотекстовый поиск, используя TrigramSimilarity.Я активировал расширение pg_trgm в PostgreSQL.и добавил django.contrib.postgres в мои установленные приложения.Но когда я пытаюсь выполнить запрос

blog.objects.annotate(similarity=TrigramSimilarity('name', 'abc'),).filter(similarity__gt=0.3).order_by('-similarity')

Но он выдаёт мне ошибку

psycopg2.ProgrammingError: подобия функции (символ изменяется, неизвестно) не существует ЛИНИЯ 1: ...others_2 "," blog_mod ", SIMILARITY ... ^ СОВЕТ: Ни одна функция не соответствует заданному имени и типу аргумента. Возможно, вам потребуется добавить явные приведения типов.

Почему происходит эта ошибка. Пожалуйста, обратите внимание.помоги мне.

1 Ответ

0 голосов
/ 19 октября 2018

Ошибка указывает, что расширение не было установлено.Я не знаю точно, почему это может быть.Возможно, вы не установили расширение в базе данных, которую вы используете для django?

Возможно выполнить необработанные запросы sql из вашего кода django.Это гарантирует, что вы нацеливаетесь на правильную базу данных / схему.

from django.db import connection
with connection.cursor() as cursor:
    cursor.execute('CREATE EXTENSION IF NOT EXISTS pg_trgm')

Вы также можете использовать пользовательскую миграцию Django TrigramExtension.Запрос на создание расширения такой же.Но миграция является хорошей идеей, если вы запускаете интеграционные тесты в тестовой базе данных, для которой также необходимо включить pg_trgm.

https://docs.djangoproject.com/en/2.1/ref/contrib/postgres/operations/#database-migration-operations

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...