Sha256: 11974f7a25453af73ea0ed7bc9243b1f15b92e0d44408075b96d9a6a14d05723

Contents?: true

Size: 1014 Bytes

Versions: 24

Compression:

Stored size: 1014 Bytes

Contents

module Internals

  module Generators

    module Weights

      # Uses a logarithmic weight.
      # If for a key k we have x ids, the weight is:
      # w(x): log(x)
      # Special case: If x < 1, then we use 0.
      #
      class Logarithmic < Strategy

        # Generates a partial index from the given index.
        #
        def generate_from index
          index.inject({}) do |hash, text_ids|
            text, ids = *text_ids
            weight = weight_for ids.size
            hash[text] ||= weight.round(2) if weight
            hash
          end
        end

        # Sets the weight value.
        #
        # If the size is 0 or one, we would get -Infinity or 0.0.
        # Thus we do not set a value if there is just one. The default, dynamically, is 0.
        #
        # BUT: We need the value, even if 0. To designate that there is a weight!
        #
        def weight_for amount
          return 0 if amount < 1
          Math.log amount
        end

      end

    end

  end
  
end

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
picky-2.5.2 lib/picky/internals/generators/weights/logarithmic.rb
picky-2.5.1 lib/picky/internals/generators/weights/logarithmic.rb
picky-2.5.0 lib/picky/internals/generators/weights/logarithmic.rb
picky-2.4.3 lib/picky/internals/generators/weights/logarithmic.rb
picky-2.4.2 lib/picky/internals/generators/weights/logarithmic.rb
picky-2.4.1 lib/picky/internals/generators/weights/logarithmic.rb
picky-2.4.0 lib/picky/internals/generators/weights/logarithmic.rb
picky-2.3.0 lib/picky/internals/generators/weights/logarithmic.rb
picky-2.2.1 lib/picky/internals/generators/weights/logarithmic.rb
picky-2.2.0 lib/picky/internals/generators/weights/logarithmic.rb
picky-2.1.2 lib/picky/internals/generators/weights/logarithmic.rb
picky-2.1.1 lib/picky/internals/generators/weights/logarithmic.rb
picky-2.1.0 lib/picky/internals/generators/weights/logarithmic.rb
picky-2.0.0 lib/picky/internals/generators/weights/logarithmic.rb
picky-2.0.0.pre3 lib/picky/internals/generators/weights/logarithmic.rb
picky-2.0.0.pre2 lib/picky/internals/generators/weights/logarithmic.rb
picky-2.0.0.pre1 lib/picky/internals/generators/weights/logarithmic.rb
picky-1.5.4 lib/picky/internals/generators/weights/logarithmic.rb
picky-1.5.3 lib/picky/internals/generators/weights/logarithmic.rb
picky-1.5.2 lib/picky/internals/generators/weights/logarithmic.rb