私は自分のウェブサイトを検索しましたが、今日、たとえば投稿に「implicación en el proyecto」などの説明があり、アクセントなしで「implicación en el proyecto」という単語を使用してこの投稿を見つけようとすると、取得できないことがわかりました。どんな結果でも、アクセント付きの文字 o を使用して「implicación」を試してみると、投稿が見つかりました。
この検索を修正するにはどうすればよいですか。ユーザーがアクセントなしで単語を使用している場合でも、投稿を見つける必要があります。
これは私のモデルでの実際の検索です。私は本番用にpostgresqlを使用しています。
find(:all, :conditions => ['title LIKE ? OR title LIKE ? OR description LIKE ? OR description LIKE ?', "%#{search}%", "%#{search.capitalize}%", "%#{search}%", "%#{search.capitalize}%"] )
よろしくお願いいたします。
編集
private
def pg_strip_accents(field)
"<<EOS
translate(
LOWER(#{field}),
'âãäåāăąÁÂÃÄÅĀĂĄèééêëēĕėęěĒĔĖĘĚìíîïìĩīĭÌÍÎÏÌĨĪĬóôõöōŏőÒÓÔÕÖŌŎŐùúûüũūŭůÙÚÛÜŨŪŬŮ',
'aaaaaaaaaaaaaaaeeeeeeeeeeeeeeeiiiiiiiiiiiiiiiiooooooooooooooouuuuuuuuuuuuuuuu'
)
EOS"
end
def self.search(search)
if search.present?
where("#{pg_strip_accents('title')} LIKE :search OR #{pg_strip_accents('description')} LIKE :search",
:search => "%#{search.downcase}%")
else
find(:all)
end
end