2011-02-04 68 views
1

嗨我很難找出如何在我的應用程序中全局實現搜索表單。我有一系列必須由在簽訂,而不是登錄的用戶搜索的帖子我已經在我的崗位模型添加以下代碼:與Heroku一起使用Websolr進行全文搜索

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

不過,我不知道從哪裏裏去在所有頁面上創建一個搜索字段,並顯示我需要的結果。我是新手,如果有人願意幫助我,我會很樂意發佈更多信息。

回答

1

首先,你應該添加搜索字段就像這個railscast解釋說:http://railscasts.com/episodes/37-simple-search-form

由於您的搜索不是針對特定的模式,使用通用控制器的名稱,而不是ProjectsController雖然。

然後,您應該使用太陽黑子DSL代替ActiveRecord查找器。

這裏是一個示例代碼,以幫助您開始:

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 

在你看來,那麼你可以通過@迭代search.results

<%= 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 %> 

最後,使用WebSolR而不是標準的SolR服務器相當簡單, 您可以按照 https://github.com/onemorecloud/websolr-rails 的設置說明進行操作。

編輯: 由於尼克評論,你應該完全去http://docs.heroku.com/websolr。 謝謝尼克!

+0

好的寫作,Mathieu!小記:在Heroku上,最好參考http://docs.heroku.com/websolr獲取最新的設置說明。特別是,websolr-rails已經被棄用了很長時間,而Sunspot直接支持1.2版本的Websolr。我剛剛更新了websolr-rails README以闡明這一點。 – 2011-02-04 16:49:07