Created
July 3, 2015 20:35
-
-
Save sgringwe/912570668aca22bb3391 to your computer and use it in GitHub Desktop.
example tire search function
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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