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