class BlacklightAdvancedSearch::QueryParser
Can extract query elements from rails params
query params, and then parse them and convert them into a solr query with to_solr
keyword_queries
and filters
, which just return extracted elements of query params, may also be useful in display etc.
Attributes
config[R]
params[R]
Public Class Methods
new(params, config)
click to toggle source
# File lib/blacklight_advanced_search/advanced_query_parser.rb, line 12 def initialize(params, config) @params = Blacklight::SearchState.new(params, config).to_h @config = config end
Public Instance Methods
empty?()
click to toggle source
# File lib/blacklight_advanced_search/advanced_query_parser.rb, line 66 def empty? filters.empty? && keyword_queries.empty? end
filters()
click to toggle source
extracts advanced-type filters from query params, returned as a hash of field => [array of values]
# File lib/blacklight_advanced_search/advanced_query_parser.rb, line 51 def filters unless @filters @filters = {} return @filters unless @params[:f_inclusive] && @params[:f_inclusive].respond_to?(:each_pair) @params[:f_inclusive].each_pair do |field, value_array| @filters[field] ||= value_array.dup end end @filters end
filters_include_value?(field, value)
click to toggle source
# File lib/blacklight_advanced_search/advanced_query_parser.rb, line 62 def filters_include_value?(field, value) filters[field.to_s].try { |array| array.include? value } end
keyword_op()
click to toggle source
Returns “AND” or “OR”, how keyword_queries
will be combined
# File lib/blacklight_advanced_search/advanced_query_parser.rb, line 27 def keyword_op @params["op"] || "AND" end
keyword_queries()
click to toggle source
extracts advanced-type keyword query elements from query params, returns as a kash of field => query. see also keyword_op
# File lib/blacklight_advanced_search/advanced_query_parser.rb, line 34 def keyword_queries unless @keyword_queries @keyword_queries = {} return @keyword_queries unless @params[:search_field] == ::AdvancedController.blacklight_config.advanced_search[:url_key] config.search_fields.each do |key, _field_def| unless @params[key.to_sym].blank? @keyword_queries[key] = @params[key.to_sym] end end end @keyword_queries end
to_solr()
click to toggle source
# File lib/blacklight_advanced_search/advanced_query_parser.rb, line 17 def to_solr @to_solr ||= begin { :q => process_query(params, config), :fq => generate_solr_fq } end end