class RecommEngine::Matcher

Attributes

data[R]
num[R]
similarity[R]
subject[R]

Public Class Methods

new(data:, subject:, similarity: RecommEngine::DEFAULT_ALGORITHM, num: RecommEngine::DEFAULT_MATCHES_NUMBER) click to toggle source
# File lib/recommengine/matcher.rb, line 5
def initialize(data:, subject:, similarity: RecommEngine::DEFAULT_ALGORITHM, num: RecommEngine::DEFAULT_MATCHES_NUMBER)
  @data = data
  @subject = subject
  @similarity = similarity
  @num = num
end

Public Instance Methods

bottom_matches() click to toggle source
# File lib/recommengine/matcher.rb, line 16
def bottom_matches
  all_matches[0..upper_limit]
end
top_matches() click to toggle source
# File lib/recommengine/matcher.rb, line 12
def top_matches
  all_matches.reverse[0..upper_limit]
end

Private Instance Methods

all_matches() click to toggle source
# File lib/recommengine/matcher.rb, line 22
def all_matches
  similarity_scores.sort_by{|k, v| v}
end
comparates() click to toggle source
# File lib/recommengine/matcher.rb, line 42
def comparates
  data.dup.delete_if{ |k,v| k == subject }.keys
end
similarity_calculator() click to toggle source
# File lib/recommengine/matcher.rb, line 34
def similarity_calculator
  Module.const_get("RecommEngine::#{similarity}Calculator")
end
similarity_scores() click to toggle source
# File lib/recommengine/matcher.rb, line 26
def similarity_scores
  scores = {}
  comparates.each do |comparate|
    scores[comparate] = similarity_calculator.new(data: data, subject: subject, comparate: comparate).calc
  end
  scores
end
upper_limit() click to toggle source
# File lib/recommengine/matcher.rb, line 38
def upper_limit
  num - 1
end