Ваш ответ был правильным, но он не работал из-за проблем с пользователями, поэтому теперь все работает отлично.

ановил UnaccentExtension в Django, но у меня проблемы с использованием этого поиска:

vector = SearchVector('title__unaccent', 'abstract__unaccent')
query = SearchQuery(word) | SearchQuery(word2)
files = Doc.objects.annotate(rank=SearchRank(vector, query)).order_by('-rank')

Это ошибка:

Не удается разрешить ключевое слово «unaccent» в поле. Регистрация на "титул" не допускается.

При простейшем поиске он работает нормально:

Doc.objects.filter(title__unaccent=word)

Итак, что я делаю не так?

Ответы на вопрос(1)

Решение Вопроса

но вы должны определить новую «unaccented» конфигурацию в PostgreSQL.

Если вы пропустили,устанавливает unaccent расширение.

Создайте свой безударный словарь в PostgrSQL или используяпустые миграции с этим SQL:

CREATE TEXT SEARCH CONFIGURATION french_unaccent( COPY = french );
ALTER TEXT SEARCH CONFIGURATION french_unaccent
ALTER MAPPING FOR hword, hword_part, word
WITH unaccent, french_stem;

Используйте эту конфигурацию в вашем запросе Django:

SearchVector('title','abstract', config='french_unaccent')
SearchQuery(word, config='french_unaccent')

Вы можете найти больше информации об этом типе конфигурации вофициальная документация PostgreSQL в различныхстатьи

 Alan Rivas13 нояб. 2017 г., 18:34
Ваш ответ был правильным, но он не работал из-за проблем с пользователями, поэтому теперь все работает отлично.
 Alan Rivas13 нояб. 2017 г., 17:54
проблема решена, я делал настройку текстового поиска с пользователем postgres, отличным от используемого в Django
 Paolo Melchiorre13 нояб. 2017 г., 17:15
У меня есть различные рабочие сайты, которые используют это решение. Что вы имеете в виду для "тех же вопросов"?
 Alan Rivas13 нояб. 2017 г., 17:11
создавая эту конфигурацию, я могу правильно выполнить запрос в Postgres с помощью SQL, представленного в статье, но в Django у меня возникают те же проблемы.
 Alan Rivas13 нояб. 2017 г., 17:18
В Postgres я делаю это:SELECT * FROM alumno WHERE to_tsvector('sp', name) @@ to_tsquery('sp', 'matias'); и из базы данных у меня 1 совпадение ** Матиас Лерманда **. С другой стороны, если я сделаю это в Джангоvector = SearchVector('name', conf='sp') query = SearchQuery('matias', conf='sp') a = Alumno.objects.annotate(search=vector).filter(search=query) У меня 0 матчей

Ваш ответ на вопрос