我有一个rails应用程序,并决定进行搜索。我有一个搜索文本域,控制器负责一切。在我的搜索方法
def self.search(search)
if search
str = []
search.split.each do |s|
a = find(:all, :conditions => ['title or content LIKE ?', "%#{s}%" ])
str = (str + a).uniq
end
else
find(:all)
end
end
我希望能够处理多个单词搜索。如果你删除每个...循环它可以正常1字搜索。 无论如何,我想找到搜索到的每个单词的相关帖子,并返回它的组合。
实施例。如果有人搜索“最伟大的玩家”,它将返回标题或内容为“最大”的所有帖子实例以及任何标题或内容为“播放器”的帖子
答案 0 :(得分:6)
答案 1 :(得分:2)
不应该
a = find(:all, :conditions => ['title or content LIKE ?', "%#{s}%" ])
答案 2 :(得分:2)
您只需要将find语句更改为Mischa的代码并添加一个返回语句
工作代码:
def self.search(search)
if search
str = []
search.split.each do |s|
a = where(title LIKE ? or content LIKE ?', "%#{s}%", "%#{s}%")
str = (str + a).uniq
end
return str
else
find(:all)
end
end