搜索句子

时间:2012-04-26 03:04:21

标签: ruby-on-rails ruby string search

我有一个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字搜索。 无论如何,我想找到搜索到的每个单词的相关帖子,并返回它的组合。

实施例。如果有人搜索“最伟大的玩家”,它将返回标题或内容为“最大”的所有帖子实例以及任何标题或内容为“播放器”的帖子

3 个答案:

答案 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