2

我有一个 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

我希望能够处理多个单词搜索。如果您删除 each...loop,它适用于 1 个单词搜索。无论如何,我想为每个搜索的单词找到相关的帖子并返回它们的组合。

前任。如果有人搜索“Greatest Player”,它将返回标题或内容为“Greatest”的所有帖子实例以及任何标题或内容为“Player”的帖子实例

4

3 回答 3

6

您很可能应该查看全文搜索:

于 2012-04-26T04:19:21.843 回答
2

难道不应该

a = find(:all, :conditions => ['title or content LIKE ?', "%#{s}%" ])
于 2012-04-26T04:18:36.760 回答
2

您只需将 find 语句更改为 Mischa 的代码并添加 return 语句

工作代码:

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
于 2013-12-05T19:23:26.153 回答