Class: Likes::Set

Inherits:
Object
  • Object
show all
Defined in:
lib/likes/set.rb

Overview

Job: Understands patterns in people likings

Constant Summary collapse

DEFAULT_ENGINE =

Default engine - simplest one

Engines::BestIntersectionSize

Instance Method Summary collapse

Constructor Details

#initialize(likes, engine = DEFAULT_ENGINE) ⇒ Set

Creates new instance of Set

Parameters:

  • likes (Array<Like>)

    List of likes

  • engine (Engines::Protocol) (defaults to: DEFAULT_ENGINE)

    Recommendation engine to use

See Also:



15
16
17
18
19
20
# File 'lib/likes/set.rb', line 15

def initialize(likes, engine=DEFAULT_ENGINE)
  @likes = likes
  @engine = engine
  build_likes_of
  build_liked
end

Instance Method Details

#recommendations_for(person) ⇒ Array<Item>

Provides list of recommendations for person based on this likeset

Should handle amount of distinct people <= 10**6 and amount of distinct items <= 10**6, but likeset length is <= 10**7, ie it is advised to use only recent likes (couple of weeks or month)

Parameters:

  • person (Person#==)

    The person to provide recommendations for

Returns:

  • (Array<Item>)

    List of recommendations for the person



32
33
34
# File 'lib/likes/set.rb', line 32

def recommendations_for(person)
  engine.new(person, likes_of, liked).solve
end