module RSolr::Uri
def self.create url
def self.create url ::URI.parse url[-1] == ?/ ? url : "#{url}/" end
def build_param(k,v)
Returns a query string param pair as a string.
def build_param(k,v) "#{escape_query_value(k)}=#{escape_query_value(v)}" end
def bytesize(string)
def bytesize(string) string.bytesize end
def bytesize(string)
def bytesize(string) string.size end
def escape_query_value(s)
version since it's faster.
query strings faster. Use this rather than the cgi.rb
Performs URI escaping so that you can construct proper
def escape_query_value(s) s.to_s.gsub(/([^ a-zA-Z0-9_.-]+)/n) { #'%'+$1.unpack('H2'*$1.size).join('%').upcase '%'+$1.unpack('H2'*bytesize($1)).join('%').upcase }.tr(' ', '+') end
def params_to_solr(params)
is converted to:
params_to_solr(:q => 'query', :fq => ['a', 'b'])
Keys that have arrays values are set multiple times:
Creates a Solr based query string.
def params_to_solr(params) mapped = params.map do |k, v| next if v.to_s.empty? if v.class == Array params_to_solr(v.map { |x| [k, x] }) else build_param k, v end end mapped.compact.join("&") end