Commit 925fd62d7809a5876cf153dbb72565694378ec52
1 parent
4a811975
Exists in
master
and in
22 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