Sha256: 21d0eb6d0b49f90d2bd4912cf2bef2f41fd1060d11fbbf4201876c91919a148f

Contents?: true

Size: 1.71 KB

Versions: 1

Compression:

Stored size: 1.71 KB

Contents

# TODO Merge into Base, extract common with Indexed::Base.
#
module Indexing # :nodoc:all
  # A Bundle is a number of indexes
  # per [index, category] combination.
  #
  # At most, there are three indexes:
  # * *core* index (always used)
  # * *weights* index (always used)
  # * *similarity* index (used with similarity)
  #
  # In Picky, indexing is separated from the index
  # handling itself through a parallel structure.
  #
  # Both use methods provided by this base class, but
  # have very different goals:
  #
  # * *Indexing*::*Bundle* is just concerned with creating index files
  #   and providing helper functions to e.g. check the indexes.
  #
  # * *Index*::*Bundle* is concerned with loading these index files into
  #   memory and looking up search data as fast as possible.
  #
  module Bundle

    class SuperBase

      attr_reader   :identifier, :files
      attr_accessor :index, :weights, :similarity, :configuration, :similarity_strategy

      delegate :clear,    :to => :index
      delegate :[], :[]=, :to => :configuration

      def initialize name, category, similarity_strategy
        @identifier    = "#{category.identifier}:#{name}"
        @files         = Backend::Files.new name, category

        @index         = {}
        @weights       = {}
        @similarity    = {}
        @configuration = {} # A hash with config options.

        @similarity_strategy = similarity_strategy
      end

      # Get a list of similar texts.
      #
      # Note: Does not return itself.
      #
      def similar text
        code = similarity_strategy.encoded text
        similar_codes = code && @similarity[code]
        similar_codes.delete text if similar_codes
        similar_codes || []
      end

    end

  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
picky-2.6.0 lib/picky/indexing/bundle/super_base.rb