Skip to content

Instantly share code, notes, and snippets.

@sgringwe
Created July 3, 2015 20:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sgringwe/912570668aca22bb3391 to your computer and use it in GitHub Desktop.
Save sgringwe/912570668aca22bb3391 to your computer and use it in GitHub Desktop.
example tire search function
def self.search(params)
params[:query] = params[:query].downcase if params[:query].present? # Only finds if downcased
tire.search(load: params[:load] || false, page: params[:page], per_page: params[:per_page] || 25) do
query do
boolean minimum_number_should_match: 1 do
Searchable.should_match_multi_field(self, params, 'name', 10)
Searchable.should_fuzzy_match(self, params, :name)
end if params[:query].present?
boolean do
must { term :type, JsonHelper.type_static(Pin) }
must { terms :id, params[:ids] } unless params[:ids].nil?
must { term :institution_id, params[:institution_id] } if params[:institution_id].present?
must { term :institution_type, params[:institution_type] } if params[:institution_type].present?
must { term :institution_id_type, params[:institution_id_type] } if params[:institution_id_type].present?
must { term :pinnable_id, params[:pinnable_id] } if params[:pinnable_id].present?
must { term :pinnable_type, params[:pinnable_type] } if params[:pinnable_type].present?
must { terms :pinnable_id_type, params[:pinnable_id_types].split(',') } if params[:pinnable_id_types].present?
must { terms :institution_id_type, params[:institution_id_types].split(',') } if params[:institution_id_types].present?
must { terms :status, params[:status].split(',') } if params[:status].present?
end
boolean(&StudentScreen.search_terms('student_screen.', params, :must)) if params[:qualified_only].present?
end
Pin.add_aggregations(self, params)
Searchable.make_sortable(self, params, "created_at", "desc")
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment