Sha256: 8803c19490556235b267123ebcefc5d135621987177101615f13eebd636730af

Contents?: true

Size: 962 Bytes

Versions: 61

Compression:

Stored size: 962 Bytes

Contents

module Picky

  class Index
    
    # Return facets for a category in the form:
    #   { text => count }
    #
    # Options
    #   counts: Whether you want counts or not.
    #   at_least: A minimum count a facet needs to have (inclusive). 
    #
    # TODO Think about having a separate index for counts to reduce the complexity of this.
    #
    def facets category_identifier, options = {}
      text_ids = self[category_identifier].exact.inverted
      no_counts = options[:counts] == false
      minimal_counts = options[:at_least]
      
      if no_counts
        text_ids.inject([]) do |result, (text, ids)|
          next result if minimal_counts && ids.size < minimal_counts
          result << text
        end
      else
        text_ids.inject({}) do |result, (text, ids)|
          size = ids.size
          next result if minimal_counts && size < minimal_counts
          result[text] = size; result
        end
      end
    end

  end

end

Version data entries

61 entries across 61 versions & 1 rubygems

Version Path
picky-4.22.0 lib/picky/index_facets.rb
picky-4.21.2 lib/picky/index_facets.rb
picky-4.21.1 lib/picky/index_facets.rb
picky-4.21.0 lib/picky/index_facets.rb
picky-4.20.2 lib/picky/index_facets.rb
picky-4.20.1 lib/picky/index_facets.rb
picky-4.20.0 lib/picky/index_facets.rb
picky-4.19.7 lib/picky/index_facets.rb
picky-4.19.6 lib/picky/index_facets.rb
picky-4.19.5 lib/picky/index_facets.rb
picky-4.19.4 lib/picky/index_facets.rb
picky-4.19.3 lib/picky/index_facets.rb
picky-4.19.2 lib/picky/index_facets.rb
picky-4.19.1 lib/picky/index_facets.rb
picky-4.19.0 lib/picky/index_facets.rb
picky-4.18.0 lib/picky/index_facets.rb
picky-4.17.1 lib/picky/index_facets.rb
picky-4.17.0 lib/picky/index_facets.rb
picky-4.16.0 lib/picky/index_facets.rb
picky-4.15.1 lib/picky/index_facets.rb