Commit 925fd62d7809a5876cf153dbb72565694378ec52
1 parent
4a811975
Exists in
master
and in
28 other branches
Add solr's 'facets' option support to finders
Showing
3 changed files
with
12 additions
and
3 deletions
Show diff stats
app/controllers/public/search_controller.rb
@@ -89,7 +89,8 @@ class SearchController < PublicController | @@ -89,7 +89,8 @@ class SearchController < PublicController | ||
89 | # REFACTOR DUPLICATED CODE inner loop doing the same thing that outter loop | 89 | # REFACTOR DUPLICATED CODE inner loop doing the same thing that outter loop |
90 | 90 | ||
91 | if !@query.blank? || @region && !params[:radius].blank? | 91 | if !@query.blank? || @region && !params[:radius].blank? |
92 | - @result_ids = @noosfero_finder.find(asset, @query, calculate_find_options(asset, nil, params[:page], @product_category, @region, params[:radius], params[:year], params[:month]).merge({:limit => :all})) | 92 | + ret = @noosfero_finder.find(asset, @query, calculate_find_options(asset, nil, params[:page], @product_category, @region, params[:radius], params[:year], params[:month]).merge({:limit => :all})) |
93 | + @result_ids = ret.is_a?(Hash) ? ret[:results] : ret | ||
93 | end | 94 | end |
94 | 95 | ||
95 | end | 96 | end |
@@ -157,12 +158,16 @@ class SearchController < PublicController | @@ -157,12 +158,16 @@ class SearchController < PublicController | ||
157 | number_of_result_assets = @searching.values.select{|v| v}.size | 158 | number_of_result_assets = @searching.values.select{|v| v}.size |
158 | 159 | ||
159 | @results = {} | 160 | @results = {} |
161 | + @facets = {} | ||
160 | @order = [] | 162 | @order = [] |
161 | @names = {} | 163 | @names = {} |
162 | 164 | ||
163 | where_to_search.select { |key,description| @searching[key] }.each do |key, description| | 165 | where_to_search.select { |key,description| @searching[key] }.each do |key, description| |
164 | @order << key | 166 | @order << key |
165 | - @results[key] = @noosfero_finder.find(key, @query, calculate_find_options(key, limit, params[:page], @product_category, @region, params[:radius], params[:year], params[:month])) | 167 | + find_options = calculate_find_options(key, limit, params[:page], @product_category, @region, params[:radius], params[:year], params[:month]); |
168 | + ret = @noosfero_finder.find(key, @query, find_options) | ||
169 | + @results[key] = ret.is_a?(Hash) ? ret[:results] : ret | ||
170 | + @facets[key] = ret.is_a?(Hash) ? ret[:facets] : {} | ||
166 | @names[key] = getterm(description) | 171 | @names[key] = getterm(description) |
167 | end | 172 | end |
168 | 173 |
app/models/category_finder.rb
@@ -28,10 +28,12 @@ class CategoryFinder | @@ -28,10 +28,12 @@ class CategoryFinder | ||
28 | end | 28 | end |
29 | 29 | ||
30 | if query.blank? | 30 | if query.blank? |
31 | + options.delete(:facets) | ||
31 | asset_class(asset).send(finder_method, :all, options_for_find(asset_class(asset), {:order => "#{asset_table(asset)}.name"}.merge(options), date_range)) | 32 | asset_class(asset).send(finder_method, :all, options_for_find(asset_class(asset), {:order => "#{asset_table(asset)}.name"}.merge(options), date_range)) |
32 | else | 33 | else |
33 | pg_options = {:page => options.delete(:page), :per_page => options.delete(:per_page)} | 34 | pg_options = {:page => options.delete(:page), :per_page => options.delete(:per_page)} |
34 | - asset_class(asset).find_by_contents(query, pg_options, {}, options_for_find(asset_class(asset), options, date_range))[:results] | 35 | + solr_options = {:facets => options.delete(:facets)} |
36 | + asset_class(asset).find_by_contents(query, pg_options, solr_options, options_for_find(asset_class(asset), options, date_range))[:results] | ||
35 | end | 37 | end |
36 | end | 38 | end |
37 | 39 |
app/models/environment_finder.rb
@@ -22,6 +22,8 @@ class EnvironmentFinder | @@ -22,6 +22,8 @@ class EnvironmentFinder | ||
22 | end | 22 | end |
23 | 23 | ||
24 | if query.blank? | 24 | if query.blank? |
25 | + options.delete(:facets) | ||
26 | + | ||
25 | # FIXME this test is in more than one place | 27 | # FIXME this test is in more than one place |
26 | if finder_method == 'paginate' | 28 | if finder_method == 'paginate' |
27 | options = {:order => "#{asset_table(asset)}.name"}.merge(options) | 29 | options = {:order => "#{asset_table(asset)}.name"}.merge(options) |