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