写一个松散匹配的搜索方法

| 我刚刚看了一个简单的搜索表单的栏杆广播,我想在我的应用程序中做类似的事情,但是我不想只找到完全匹配的结果。 我有一个名为
Project
的模型,其中包含以下字段:
name
description
keyword1
,以及
keyword2
。 给定从railscast中获取的代码:
models/project.rb

def self.search(search)
    if search
        find( :all, :conditions => [\'name LIKE ?\', \"%#{search}%\"] )
    else
        find(:all)
    end
end
如果我要搜索\“ Pizza \”,并且希望它与名为\“ Master Pizza Project \”的项目与关键字1 => \“ MasterPizza \”和关键字2 => \“ Pizza \”匹配,怎么办我重构上面的代码? 另外,区分大小写是个问题吗?     
已邀请:
        瑞恩·贝茨(Ryan Bates)谈到了利用Sphinx进行全文搜索的另一条新闻。我强烈建议您采用这种方法,而不要从头开始: http://railscasts.com/episodes/120-thinking-sphinx     
        您需要将查询拆分为多个原子,将每个原子作为单独的查询运行,然后合并每个原子的结果。 此时,事情变得非常复杂,最好使用诸如“索引索引”之类的搜索库来为您解决所有这些问题。 [披露]我是《索引》的作者。     
        查看Metasearch和Metawhere宝石。     
        我不太了解您的q,但我希望这是有道理的:
def self.search(search)
    if search
     where(\'title LIKE ? OR keyword1 LIKE ? OR keyword2 LIKE ?\',\"%#{search}%\", \"%#{search}%\",\"%#{search}%\")
    # find(:all, :conditions => [\'title LIKE ?\', \"%#{search}%\"])
    else
      all
    end
  end    
    

要回复问题请先登录注册