Прежде всего, вы устанавливаете postgresql-contrib.Затем вы подключаетесь к своей БД и выполняете:
CREATE EXTENSION unaccent;
, чтобы включить расширение для вашей БД.
В зависимости от вашего языка, вам может потребоваться создать новый файл правил (в моем случаеgreek.rules
, расположенный в /usr/share/postgresql/9.1/tsearch_data
), или просто добавьте к существующему unaccent.rules
(довольно просто).
В случае, если вы создаете свой собственный файл .rules
, вам нужно установить его по умолчанию:
ALTER TEXT SEARCH DICTIONARY unaccent (RULES='greek');
Это изменение является постоянным, поэтому вам не нужно его переделывать.
Следующим шагом будет добавление метода в модель для использования этой функции.
Одним простым решением было бы определение функции в модели.Например:
class Model < ActiveRecord::Base
[...]
def self.unaccent(column,value)
a=self.where('unaccent(?) LIKE ?', column, "%value%")
a
end
[...]
end
Затем я могу просто вызвать:
Model.unaccent("name","text")
Вызов той же команды без определения модели будет таким же простым, как:
Model.where('unaccent(name) LIKE ?', "%text%"
Примечание: приведенный выше пример был протестирован и работает на postgres9.1, Rails 4.0, Ruby 2.0.
ОБНОВЛЕНИЕ ИНФОРМАЦИИ
Исправлен потенциальный бэкдор SQLi благодаря обратной связи @Henrik N