Sha256: 943bfb982f0781eadbc2c3eea0e6d9b871cd56f225ec1b1c7020cc446eb54b9f

Contents?: true

Size: 1.35 KB

Versions: 15

Compression:

Stored size: 1.35 KB

Contents

# encoding: utf-8
#
module Picky

  module Indexed

    module Wrappers

      # This index combines an exact and partial index.
      # It serves to order the results such that exact hits are found first.
      #
      class ExactFirst < Indexed::Bundle

        delegate :similar,
                 :identifier,
                 :name,
                 :to => :@exact
        delegate :index,
                 :category,
                 :weight,
                 :generate_partial_from,
                 :generate_caches_from_memory,
                 :generate_derived,
                 :dump,
                 :load,
                 :to => :@partial

        def initialize category
          @exact   = category.indexed_exact
          @partial = category.indexed_partial
        end

        def self.wrap index_or_category
          if index_or_category.respond_to? :categories
            wrap_each_of index_or_category.categories
            index_or_category
          else
            new index_or_category
          end
        end
        def self.wrap_each_of categories
          categories.categories.collect! { |category| new(category) }
        end

        def ids text
          @exact.ids(text) + @partial.ids(text)
        end

        def weight text
          [@exact.weight(text) || 0, @partial.weight(text) || 0].max
        end

      end

    end

  end

end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
picky-3.2.0 lib/picky/indexed/wrappers/exact_first.rb
picky-3.1.13 lib/picky/indexed/wrappers/exact_first.rb
picky-3.1.12 lib/picky/indexed/wrappers/exact_first.rb
picky-3.1.11 lib/picky/indexed/wrappers/exact_first.rb
picky-3.1.10 lib/picky/indexed/wrappers/exact_first.rb
picky-3.1.9 lib/picky/indexed/wrappers/exact_first.rb
picky-3.1.8 lib/picky/indexed/wrappers/exact_first.rb
picky-3.1.7 lib/picky/indexed/wrappers/exact_first.rb
picky-3.1.6 lib/picky/indexed/wrappers/exact_first.rb
picky-3.1.5 lib/picky/indexed/wrappers/exact_first.rb
picky-3.1.4 lib/picky/indexed/wrappers/exact_first.rb
picky-3.1.3 lib/picky/indexed/wrappers/exact_first.rb
picky-3.1.2 lib/picky/indexed/wrappers/exact_first.rb
picky-3.1.1 lib/picky/indexed/wrappers/exact_first.rb
picky-3.1.0 lib/picky/indexed/wrappers/exact_first.rb