我在我的网站上进行了搜索,今天我发现如果一个帖子有例如“implicación en el proyecto”这样的描述,并且我尝试使用“implicacion”这个词而不带重音来查找这个帖子,我不明白任何结果,但是如果我尝试使用带有重音的字母 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