Skip to content

Instantly share code, notes, and snippets.

@bogdan
Created May 26, 2010 14:46
Show Gist options
  • Save bogdan/414578 to your computer and use it in GitHub Desktop.
Save bogdan/414578 to your computer and use it in GitHub Desktop.
class SearchController < ApplicationController
def index
case params[:show]
when 'people'
search_scope = [User]
when 'projects'
search_scope = [Project]
else
search_scope = [User, Project]
end
query = params[:q]
page = params[:page] || 1
sort = params[:sort]
search = Sunspot.search(*search_scope) do |s|
s.keywords params[:q]
s.paginate :page => params[:page]
case params[:sort]
when 'alpha'
Rails.logger.info '~~ sort by name'
s.order_by :name
when 'joined'
s.order_by :created_at, :desc if params[:show] == 'people'
when 'industry'
s.order_by :industry if params[:show] == 'projects'
when 'commitments'
s.order_by :commitments, :desc if params[:show] == 'projects'
when 'followers'
s.order_by :followers, :desc if params[:show] == 'people'
when 'entrepreneur'
if params[:show] == 'people'
s.with :entrepreneur, true
s.order_by :projects, :desc
end
end
(params[:filter].is_a?(Hash) ? params[:filter] : {}).each_pair do |key, val|
case key
when 'industry'
s.with :industries, val
end
end
end
@results = search.execute.results
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment