简体   繁体   中英

Using Websolr with Heroku to do full text search

Hi I am having trouble trying to figure out how to implement a search form globally across my application. I have a series of posts that need to be searchable by users that are signed in and not signed in. I have added this code in my post model:

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

However, I do not know where to go from there to create a search field across all pages and make it show the results I need. I am new to rails and would be happy to post more information if someone is willing to help me out.

First, you should add your search field like explained in this railscast: http://railscasts.com/episodes/37-simple-search-form

Since your search isn't specific to a particular model, use a generic controller name instead of ProjectsController though.

Then, you should replace the ActiveRecord finder by the use of the Sunspot DSL.

Here is an sample code to help get you started:

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

In your view, you can then iterate through @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 %>

Last, using WebSolR instead of a standard SolR server is quite simple, you can follow the setup instructions at https://github.com/onemorecloud/websolr-rails .

Edit: As Nick commented, you should totally go to http://docs.heroku.com/websolr . Thanks Nick !

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM