У меня установлено unaccent
расширение, установленное в Postgres, и в моем приложении Django работают простые фильтры, например:
q = 'hello'
queryset.filter(name__unaccent__startswith=q)
Я сейчас пытаюсь комментировать результат набора запросов с поисковым индексом:
queryset.annotate(search_index=StrIndex(Lower('name'), Value(q)))
Это прекрасно работает для текста без акцента, но я пытаюсь найти способ применить UNACCENT к переменной name. По сути:
SELECT
-- This is what I want!
STRPOS(LOWER(UNACCENT(core_ingredient.name)::text), 'hello') AS search_index_unaccented,
STRPOS(LOWER(core_ingredient.name), 'hello') AS search_index_basic
FROM
-- ...
Я пробовал:
# This has no effect, gives same query / result as above
queryset.annotate(search_index=StrIndex(Lower('name__unaccent'), Value(q)))
Я видел этот ответ: Как использовать `unaccent` с полнотекстовым поиском в django 1.10? но чувствую, что это не нужно.