Module: RSolr::Uri

Defined in:
lib/rsolr/uri.rb

Class Method Summary collapse

Class Method Details

.params_to_solr(params, escape = true) ⇒ String

Creates a Solr based query string. Keys that have arrays values are set multiple times:

params_to_solr(:q => 'query', :fq => ['a', 'b'])

is converted to:

?q=query&fq=a&fq=b

Parameters:

  • escape (boolean) (defaults to: true)

    false if no URI escaping is to be performed. Default true.

Returns:

  • (String)

    Solr query params as a String, suitable for use in a url



11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/rsolr/uri.rb', line 11

def self.params_to_solr(params, escape = true)
  return URI.encode_www_form(params.reject{|k,v| k.to_s.empty? || v.to_s.empty?}) if escape

  # escape = false if we are here
  mapped = params.map do |k, v|
    next if v.to_s.empty?
    if v.class == ::Array
      params_to_solr(v.map { |x| [k, x] }, false)
    else
      "#{k}=#{v}"
    end
  end
  mapped.compact.join("&")
end