diff --git a/rails/hamster/app/helpers/solr_helper.rb b/rails/hamster/app/helpers/solr_helper.rb index adea5ec..7f35ac7 100644 --- a/rails/hamster/app/helpers/solr_helper.rb +++ b/rails/hamster/app/helpers/solr_helper.rb @@ -1,19 +1,30 @@ module SolrHelper $select_url = 'http://localhost:8983/solr/select/' + $redis = '/home/me/repos/redis.git/src/redis-cli' def get_results(search) + cached = `#{$redis} GET "query:#{search}"` + + if cached.strip().length > 0 + # puts "cached=#{cached}" + xml_results = REXML::Document.new cached + else raw_results = open("#{$select_url}?q=#{search}").read + # puts "caching '#{raw_results}'" + `#{$redis} SET "query:#{search}" '#{raw_results}'` + xml_results = REXML::Document.new raw_results + end - results = [] - REXML::XPath.each(xml_results, '//result/doc') do |doc| - results.push({ - :id => doc.elements['./str[@name="id"]'], - :description => doc.elements['./str[@name="name"]'] - }) - end + results = [] + REXML::XPath.each(xml_results, '//result/doc') do |doc| + results.push({ + :id => doc.elements['./str[@name="id"]'], + :description => doc.elements['./str[@name="name"]'] + }) + end - return results + return results end end