Commit ec7c804d2898fbb50a508c7705a4b2953121b491

Authored by Braulio Bhavamitra
1 parent 5e791399

Faster and simples unfiltered facets treatment

Showing 1 changed file with 23 additions and 20 deletions   Show diff stats
lib/acts_as_faceted.rb
... ... @@ -68,31 +68,30 @@ module ActsAsFaceted
68 68 facets_data ||= {}
69 69 solr_facet = to_solr_fields_names[facet[:solr_field]]
70 70  
71   - if unfiltered_facets_data
72   - facets_data = unfiltered_facets_data.mash do |container, value|
73   - [container, value.mash do |field, value|
74   - facets_data[container] = {} if facets_data[container].nil? or facets_data[container] == []
75   - f = Hash[Array(facets_data[container][field])]
76   - zeros = []
77   - [field, Array(value).map do |id, count|
78   - count = f[id]
79   - if count.nil?
80   - zeros.push [id, 0]
81   - nil
82   - else
83   - [id, count]
84   - end
85   - end.compact + zeros]
86   - end]
87   - end
88   - end
89   -
90 71 if facet[:queries]
91 72 container = facets_data[facets_results_containers[:queries]]
92 73 facet_data = (container.nil? or container.empty?) ? [] : container.select{ |k,v| k.starts_with? solr_facet }
  74 + container = unfiltered_facets_data[facets_results_containers[:queries]]
  75 + unfiltered_facet_data = (container.nil? or container.empty?) ? [] : container.select{ |k,v| k.starts_with? solr_facet }
93 76 else
94 77 container = facets_data[facets_results_containers[:fields]]
95 78 facet_data = (container.nil? or container.empty?) ? [] : container[solr_facet] || []
  79 + container = unfiltered_facets_data[facets_results_containers[:fields]]
  80 + unfiltered_facet_data = (container.nil? or container.empty?) ? [] : container[solr_facet] || []
  81 + end
  82 +
  83 + if !unfiltered_facets_data.blank? and !facet_params.blank?
  84 + f = Hash[Array(facet_data)]
  85 + zeros = []
  86 + facet_data = unfiltered_facet_data.map do |id, count|
  87 + count = f[id]
  88 + if count.nil?
  89 + zeros.push [id, 0]
  90 + nil
  91 + else
  92 + [id, count]
  93 + end
  94 + end.compact + zeros
96 95 end
97 96  
98 97 facet_count = facet_data.length
... ... @@ -158,6 +157,10 @@ module ActsAsFaceted
158 157 end
159 158 end
160 159  
  160 + def facet_label(facet)
  161 + _ facet[:label]
  162 + end
  163 +
161 164 def facets_find_options(facets_selected = {}, options = {})
162 165 browses = []
163 166 facets_selected ||= {}
... ... @@ -176,7 +179,7 @@ module ActsAsFaceted
176 179 {:facets => {:zeros => false, :sort => :count,
177 180 :fields => facets_option_for_solr,
178 181 :browse => browses,
179   - :query => facets.map { |f, options| options[:queries].keys.map { |q| f.to_s + ':' + q } if options[:queries]}.compact.flatten,
  182 + :query => facets.map { |f, options| options[:queries].keys.map { |q| f.to_s + ':' + q } if options[:queries] }.compact.flatten,
180 183 }
181 184 }
182 185 end
... ...