Skip to content

Instantly share code, notes, and snippets.

@yulgit1
Created March 7, 2017 20:49
Show Gist options
  • Save yulgit1/87887e813eeacc025c86b39afe03b074 to your computer and use it in GitHub Desktop.
Save yulgit1/87887e813eeacc025c86b39afe03b074 to your computer and use it in GitHub Desktop.
Gemfile
+gem 'blacklight_advanced_search'
app/assets/javascripts/application.js
+//= require 'blacklight_advanced_search'
app/controllers/catalog_controller.rb
+ include BlacklightAdvancedSearch::Controller
+
+=begin
+ configure_blacklight do |config|
+ config.advanced_search ||= Blacklight::OpenStructWithHashAccess.new
+ config.advanced_search[:qt] ||= 'advanced'
+ config.advanced_search[:url_key] ||= 'advanced'
+ config.advanced_search[:query_parser] ||= 'dismax'
+ config.advanced_search[:form_solr_parameters] ||= {}
+ config.advanced_search[:form_solr_parameters]['facet.field'] ||= %w(format language_facet advanced_location_s)
+ config.advanced_search[:form_solr_parameters]['facet.query'] ||= ''
+ config.advanced_search[:form_solr_parameters]['facet.limit'] ||= -1
+ config.advanced_search[:form_solr_parameters]['facet.pivot'] ||= ''
+ config.advanced_search[:form_solr_parameters]['f.language_facet.facet.limit'] ||= -1
+ config.advanced_search[:form_solr_parameters]['f.language_facet.facet.sort'] ||= 'index'
+ end
+=end
app/controllers/search_history_controller.rb
+ helper BlacklightAdvancedSearch::RenderConstraintsOverride
app/models/search_builder.rb
+ include BlacklightAdvancedSearch::AdvancedSearchBuilder
...
+ self.default_processor_chain += [:add_advanced_parse_q_to_solr, :add_advanced_search_to_solr]
...
+ # A Solr param filter that is NOT included by default in the chain,
+ # but is appended by AdvancedController#index, to do a search
+ # for facets _ignoring_ the current query, we want the facets
+ # as if the current query weren't there.
+ #
+ # Also adds any solr params set in blacklight_config.advanced_search[:form_solr_parameters]
+ def facets_for_advanced_search_form(solr_p)
+ # ensure empty query is all records, to fetch available facets on entire corpus
+ solr_p["q"] = '{!lucene}*:*'
+
+ # We only care about facets, we don't need any rows.
+ solr_p["rows"] = "0"
+
+ # Anything set in config as a literal
+ if blacklight_config.advanced_search[:form_solr_parameters]
+ solr_p.merge!(blacklight_config.advanced_search[:form_solr_parameters])
+ end
+ end
+
+ #def blacklight_config(source = @active_source)
+ # @blacklight_configs ||= {}
+ # @blacklight_configs[source] || (@blacklight_configs[source] = Spectrum::SearchEngines::Solr.generate_config(source))
+ #end
+
+ def blacklight_config(source = @active_source)
+ Spectrum::SearchEngines::Solr.generate_config(source)
+ end
app/models/spectrum/search_engines/solr.rb
+ def self.advanced_catalog_config(config)
+ # default advanced config values
+ config.advanced_search ||= Blacklight::OpenStructWithHashAccess.new
+ config.advanced_search[:qt] ||= 'advanced'
+ config.advanced_search[:url_key] ||= 'advanced'
+ config.advanced_search[:query_parser] ||= 'dismax'
+ config.advanced_search[:form_solr_parameters] ||= {}
+ #config.advanced_search[:form_solr_parameters]['facet.field'] ||= %w(format language_facet advanced_location_s)
+ #config.advanced_search[:form_solr_parameters]['facet.query'] ||= ''
+ #config.advanced_search[:form_solr_parameters]['facet.limit'] ||= -1
+ #config.advanced_search[:form_solr_parameters]['facet.pivot'] ||= ''
+ #config.advanced_search[:form_solr_parameters]['f.language_facet.facet.limit'] ||= -1
+ #config.advanced_search[:form_solr_parameters]['f.language_facet.facet.sort'] ||= 'index'
+
+ end
+
...
+ advanced_catalog_config(config)
config/routes.rb
+ #get 'catalog/advanced', to: 'catalog#index', as: :catalog_advanced, defaults: { q: '', show_advanced: 'true' }
+
+ mount BlacklightAdvancedSearch::Engine => '/'
app/controllers/blacklight_advanced_search/advanced_controller.rb
<override>
app/controllers/saved_searches_controller.rb
<added>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment