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 | 89 | # REFACTOR DUPLICATED CODE inner loop doing the same thing that outter loop |
90 | 90 | |
91 | 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 | 94 | end |
94 | 95 | |
95 | 96 | end |
... | ... | @@ -157,12 +158,16 @@ class SearchController < PublicController |
157 | 158 | number_of_result_assets = @searching.values.select{|v| v}.size |
158 | 159 | |
159 | 160 | @results = {} |
161 | + @facets = {} | |
160 | 162 | @order = [] |
161 | 163 | @names = {} |
162 | 164 | |
163 | 165 | where_to_search.select { |key,description| @searching[key] }.each do |key, description| |
164 | 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 | 171 | @names[key] = getterm(description) |
167 | 172 | end |
168 | 173 | ... | ... |
app/models/category_finder.rb
... | ... | @@ -28,10 +28,12 @@ class CategoryFinder |
28 | 28 | end |
29 | 29 | |
30 | 30 | if query.blank? |
31 | + options.delete(:facets) | |
31 | 32 | asset_class(asset).send(finder_method, :all, options_for_find(asset_class(asset), {:order => "#{asset_table(asset)}.name"}.merge(options), date_range)) |
32 | 33 | else |
33 | 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 | 37 | end |
36 | 38 | end |
37 | 39 | ... | ... |
app/models/environment_finder.rb