Skip to content

Instantly share code, notes, and snippets.

@elizoller
Created May 2, 2017 15:07
Show Gist options
  • Save elizoller/babf65f72f2b0a85bacb4f13b0a3b8d2 to your computer and use it in GitHub Desktop.
Save elizoller/babf65f72f2b0a85bacb4f13b0a3b8d2 to your computer and use it in GitHub Desktop.
diff --git a/app/controllers/api/v1/search_controller.rb b/app/controllers/api/v1/search_controller.rb
index 99b2af2a..c07da0f9 100644
--- a/app/controllers/api/v1/search_controller.rb
+++ b/app/controllers/api/v1/search_controller.rb
@@ -49,6 +49,16 @@ module Api
self.solr_search_params_logic += [:limit_to_scope]
end
+ if params[:filter] == 'geo'
+ self.solr_search_params_logic += [:limit_to_has_geo]
+ elsif params[:filter] == 'date'
+ self.solr_search_params_logic += [:limit_to_has_date]
+ elsif params[:filter] == 'av'
+ self.solr_search_params_logic += [:limit_to_av]
+ else
+ # no additional filter applied
+ end
+
(@response, @document_list) = get_search_results
@pagination = paginate_params(@response)
@@ -119,6 +129,21 @@ module Api
solr_parameters["facet.limit"] = "-1"
end
+ def limit_to_has_geo(solr_parameters, user_parameters)
+ solr_parameters[:fq] ||= []
+ solr_parameters[:fq] << "subject_geographic_tesim:[* TO *] OR subject_cartographics_coordinates_tesim:[* TO *]"
+ end
+
+ def limit_to_has_date(solr_parameters, user_parameters)
+ solr_parameters[:fq] ||= []
+ solr_parameters[:fq] << "key_date_ssi:[* TO *]"
+ end
+
+ def limit_to_av(solr_parameters, user_parameters)
+ solr_parameters[:fq] ||= []
+ solr_parameters[:fq] << "canonical_class_tesim:\"AudioFile\" OR canonical_class_tesim:\"VideoFile\""
+ end
+
end
end
end
diff --git a/config/routes.rb b/config/routes.rb
index cf9a0a4d..46085159 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -209,6 +209,8 @@ Cerberus::Application.routes.draw do
post "/handles/create_handle/*url" => "handles#create_handle", as: "create_handle", :url => /.*/
# search
get "/search/:id" => "search#search", as: "search"
+ # search with filters
+ get "/search/:filter/:id" => "search#search"
# files
get "/files/:id" => "core_files#show", as: "file_display"
# file sizes
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment