lib/rsolr-ext/findable.rb in mwmitchell-rsolr-ext-0.7.4 vs lib/rsolr-ext/findable.rb in mwmitchell-rsolr-ext-0.7.5
- old
+ new
@@ -32,11 +32,11 @@
# find 'jefferson', :phrase_filters=>{:type=>'book'} # q=jefferson&fq=type:"book" - all docs
# find {:q=>'something'}, :include_response=>true # q=something -- the entire response
def find(*args, &blk)
mode, solr_params, opts = extract_find_opts!(*args)
- opts[:include_response] ||= true
+ opts[:include_response] = false unless opts.key?(:include_response)
solr_params[:rows] = 1 if mode == :first
valid_solr_params = RSolr::Ext.map_params(solr_params)
response = opts[:handler] ? send_request(opts[:handler], valid_solr_params) : select(valid_solr_params)
@@ -62,32 +62,29 @@
end
end
end
# find_by_id(10, :handler=>'catalog')
- # find_by_id(:id=>10)
def find_by_id(id, solr_params={}, opts={}, &blk)
- if id.respond_to?(:each_pair)
- solr_params = id
- else
- solr_params[:phrases] ||= {}
- solr_params[:phrases][:id] = id.to_s
- end
+ solr_params[:phrases] ||= {}
+ solr_params[:phrases][:id] = id
self.find(:first, solr_params, opts, &blk)
end
protected
def extract_find_opts!(*args)
mode = :all
+ # extract the mode (:all or :first)
valid_modes = [:all, :first]
if args[0].is_a?(Symbol)
mode = valid_modes.include?(args[0]) ? args.shift : raise("Invalid find mode; should be :first or :all")
end
# extract solr params
- solr_params = args.shift
+ solr_params = args.shift || {}
+ # create a hash if a string was passed in...
unless solr_params.respond_to?(:each_pair)
- solr_params = {:q=>solr_params.to_s}
+ solr_params = {:q=>solr_params}
end
# extract options
opts = args.shift || {}
[mode, solr_params, opts]
end
\ No newline at end of file