2

私はレールアプリを持っていて、検索することにしました。検索テキストフィールドがあり、コントローラーがすべてを処理します。私の検索方法では

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... ループを削除すると、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 に答える