From dedc285f697f25aa45f83d46d8c599adabf03c63 Mon Sep 17 00:00:00 2001 From: Braulio Bhavamitra Date: Wed, 18 May 2011 18:40:08 +0000 Subject: [PATCH] Speed up find_by_contents --- lib/acts_as_searchable.rb | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/acts_as_searchable.rb b/lib/acts_as_searchable.rb index e7237fd..8659925 100644 --- a/lib/acts_as_searchable.rb +++ b/lib/acts_as_searchable.rb @@ -29,7 +29,9 @@ module ActsAsSearchable end def find_by_contents(query, pg_options = {}, options = {}, db_options = {}) - options[:limit] = 1000000; + pg_options[:page] ||= 1 + pg_options[:per_page] ||= 20 + options[:limit] = pg_options[:per_page].to_i*pg_options[:page].to_i options[:scores] = true; query = !schema_name.empty? ? "+schema_name:\"#{schema_name}\" AND #{query}" : query @@ -37,7 +39,8 @@ module ActsAsSearchable if solr_result.nil? results = facets = [] else - facets = options.include?(:facets) ? solr_result.facets : {} + facets = options.include?(:facets) ? solr_result.facets : [] + if db_options.empty? results = solr_result.results else @@ -54,12 +57,10 @@ module ActsAsSearchable results = find(:all, db_options) end - end - if !pg_options.empty? - pg_options[:page] ||= 1 - results = results.paginate(pg_options) + results = results.paginate(pg_options.merge(:total_entries => solr_result.total)) end + {:results => results, :facets => facets} end end -- libgit2 0.21.2