Sha256: bdfcd99f7d09f6000ccbc1ecae2ffaf54c32daa884cad29c7504617f24603353

Contents?: true

Size: 1.31 KB

Versions: 10

Compression:

Stored size: 1.31 KB

Contents

# encoding: utf-8
#
module Index
  
  module Wrappers
    
    # This index combines an exact and partial index.
    # It serves to order the results such that exact  hits are found first.
    #
    # TODO Need to use the right subtokens. Bake in?
    #
    class ExactFirst < Bundle
      
      delegate :similar,
               :identifier,
               :name,
               :to => :@exact
      delegate :type,
               :category,
               :weight,
               :generate_partial_from,
               :generate_caches_from_memory,
               :generate_derived,
               :dump,
               :load,
               :to => :@partial
      
      def initialize category
        @exact   = category.exact
        @partial = category.partial
      end
      
      def self.wrap type_or_category
        if type_or_category.respond_to? :categories
          wrap_each_of type_or_category.categories
          type_or_category
        else
          new type_or_category
        end
      end
      def self.wrap_each_of 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

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
picky-0.10.5 lib/picky/index/wrappers/exact_first.rb
picky-0.10.4 lib/picky/index/wrappers/exact_first.rb
picky-0.10.2 lib/picky/index/wrappers/exact_first.rb
picky-0.10.1 lib/picky/index/wrappers/exact_first.rb
picky-0.10.0 lib/picky/index/wrappers/exact_first.rb
picky-0.9.4 lib/picky/index/wrappers/exact_first.rb
picky-0.9.3 lib/picky/index/wrappers/exact_first.rb
picky-0.9.2 lib/picky/index/wrappers/exact_first.rb
picky-0.9.1 lib/picky/index/wrappers/exact_first.rb
picky-0.9.0 lib/picky/index/wrappers/exact_first.rb