2011-02-04 8 views
1

こんにちは私は、アプリケーション全体で検索フォームをグローバルに実装する方法を見つけようとしています。 。私は私のポストモデルでは、このコードを追加している私は署名に署名していないユーザーによって検索可能にする必要がある記事のシリーズをしている。しかしHerokuでWebsolrを使用して全文検索を行う

searchable do 
text :content, :default_boost => 2 
text :body, :default_boost => 1.5 
end  

、私はそこからどこへ行くかわかりませんすべてのページに検索フィールドを作成し、必要な結果を表示します。私はレールが新しく、誰かが私を助けようとしているなら、より多くの情報を投稿することができます。 http://railscasts.com/episodes/37-simple-search-form

検索は特定のモデルに固有ではないので、しかし代わりにProjectsControllerの汎用コントローラー名を使用し、このrailscastで説明するように

答えて

1

まず、あなたは検索フィールドを追加する必要があります。

次に、ActiveRecordファインダーをSunspot DSLを使用して置き換える必要があります。ここで

は、あなたが始めるのに役立つためのサンプルコードです:あなたのビューで

page = @page = params[:page] && params[:page].to_i || 1 
@search = Sunspot.search(Realty) do # search_ids 
    per_page = params[:per_page] && params[:per_page].to_i || 10 

    # not adapted to your case 
    with(:equipments).all_of params['equip'].split(' ') if params['equip'] 
    case params[:sort] 
    when "average_rating" 
    order_by :average_rating, :desc 
    when "type" 
    order_by :type, :asc 
    end 

    paginate :page => page, :per_page => per_page 

    # other criteria... 
end 

、あなたは、代わりに標準のWebSolRを使用して、

<%= will_paginate @search.results %> 

<% @search.results.each do |hit| %> 
    <%# 'path' contains the stored polymorphic_path of each model object #%> 
    <% link_to hit.stored('path') do %> 
    <p><%= hit.stored('content') %></p> 
    <% end %> 
<% end %> 

最終search.results @を反復処理することができますSolRサーバーはかなり簡単ですが、 の設定手順に従うことができます https://github.com/onemorecloud/websolr-rails

編集: ニックがコメントしたとおり、完全にhttp://docs.heroku.com/websolrに行ってください。 ありがとうニック!

+0

マシュー!小さなメモ:Herokuでは、最新のセットアップ手順についてはhttp://docs.heroku.com/websolrを参照することをお勧めします。特に、websolr-railsは長い間廃止されており、Sunspotは1.2の時点でWebsolrを直接サポートしています。私はちょっとその点を明確にするためにwebsolr-rails READMEを更新しました。 –