Ошибка при игнорировании акцентов в полнотекстовом поиске с использованием Ecto и PostgreSQL

#postgresql #elixir #phoenix-framework #ecto

#postgresql #elixir #phoenix-framework #ecto

Вопрос:

У меня есть эта функция поиска в моем контроллере:

 def search(query, search_term) do
    (from u in query,
    where: fragment("(to_tsvector('portuguese', unaccent(?)) @@ plainto_tsquery(?))", u.name, ^search_term),
    order_by: fragment("ts_rank((to_tsvector('portuguese', unaccent(?)), plainto_tsquery(?))) DESC", u.name, ^search_term))
  end
  

Я получаю эту ошибку:

 ERROR (undefined_function): function unaccent(character varying) does not exist
  

Я также добавил unaccented расширение в PostgreSQL с:

 CREATE EXTENSION unaccent;
  

Как заставить это работать?

Комментарии:

1. Похоже, вам не хватает закрытия ) во 2-м fragment , возможно, раньше DESC .

2. Если это исправит проблему, пожалуйста, примите решение о закрытии голосования «простая опечатка».

3. Вы правы, но это не было моей главной проблемой (это была ошибка при копировании кода сюда). Я собираюсь отредактировать свою ошибку. В любом случае, я думаю, что получил подсказку для другого шага после прочтения еще нескольких материалов — мне нужно установить расширение PostgreSQL.

4. Вероятно, вы ищете create extension unaccent новую ошибку при миграции.

5. Ахах. Я только что отредактировал свой вопрос. Но я добавил его прямо в свой терминал psql. Нужно ли мне делать это внутри миграции? Как?