com.planetj.taste.impl.recommender
Class CachingRecommender

java.lang.Object
  extended by com.planetj.taste.impl.recommender.CachingRecommender
All Implemented Interfaces:
Refreshable, Recommender

public final class CachingRecommender
extends java.lang.Object
implements Recommender

A Recommender which caches the results from another Recommender in memory. Results are held by SoftReferences so that the JVM may reclaim memory from the recommendationCache in low-memory situations.

Author:
Sean Owen

Constructor Summary
CachingRecommender(Recommender recommender)
           
 
Method Summary
 void clear()
          Clears all cached recommendations.
 void clear(java.lang.Object userID)
          Clears cached recommendations for the given user.
 double estimatePreference(java.lang.Object userID, java.lang.Object itemID)
          
 DataModel getDataModel()
          
 java.util.List<RecommendedItem> recommend(java.lang.Object userID, int howMany)
          
 java.util.List<RecommendedItem> recommend(java.lang.Object userID, int howMany, Rescorer<Item> rescorer)
          
 void refresh()
          

Triggers "refresh" -- whatever that means -- of the implementation.

 void removePreference(java.lang.Object userID, java.lang.Object itemID)
          
 void setPreference(java.lang.Object userID, java.lang.Object itemID, double value)
          
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

CachingRecommender

public CachingRecommender(Recommender recommender)
                   throws TasteException
Throws:
TasteException
Method Detail

recommend

@NotNull
public java.util.List<RecommendedItem> recommend(java.lang.Object userID,
                                                         int howMany)
                                          throws TasteException

Specified by:
recommend in interface Recommender
Parameters:
userID - user for which recommendations are to be computed
howMany - desired number of recommendations
Returns:
List of recommended RecommendedItems, ordered from most strongly recommend to least
Throws:
TasteException - if an error occurs while accessing the DataModel

recommend

@NotNull
public java.util.List<RecommendedItem> recommend(java.lang.Object userID,
                                                         int howMany,
                                                         Rescorer<Item> rescorer)
                                          throws TasteException

Specified by:
recommend in interface Recommender
Parameters:
userID - user for which recommendations are to be computed
howMany - desired number of recommendations
rescorer - rescoring function to apply before final list of recommendations is determined
Returns:
List of recommended RecommendedItems, ordered from most strongly recommend to least
Throws:
TasteException - if an error occurs while accessing the DataModel

estimatePreference

public double estimatePreference(java.lang.Object userID,
                                 java.lang.Object itemID)
                          throws TasteException

Specified by:
estimatePreference in interface Recommender
Parameters:
userID - user ID whose preference is to be estimated
itemID - item ID to estimate preference for
Returns:
an estimated preference if the user has not expressed a preference for the item, or else the user's actual preference for the item. If a preference cannot be estimated, returns Double.NaN
Throws:
TasteException - if an error occurs while accessing the DataModel

setPreference

public void setPreference(java.lang.Object userID,
                          java.lang.Object itemID,
                          double value)
                   throws TasteException

Specified by:
setPreference in interface Recommender
Parameters:
userID - user to set preference for
itemID - item to set preference for
value - preference value
Throws:
TasteException - if an error occurs while accessing the DataModel

removePreference

public void removePreference(java.lang.Object userID,
                             java.lang.Object itemID)
                      throws TasteException

Specified by:
removePreference in interface Recommender
Parameters:
userID - user from which to remove preference
itemID - item for which to remove preference
Throws:
TasteException - if an error occurs while accessing the DataModel

getDataModel

@NotNull
public DataModel getDataModel()

Specified by:
getDataModel in interface Recommender
Returns:
DataModel used by this Recommender

refresh

public void refresh()

Triggers "refresh" -- whatever that means -- of the implementation. The general contract is that any Refreshable should always leave itself in a consistent, operational state, and that the refresh atomically updates internal state from old to new.

Specified by:
refresh in interface Refreshable

clear

public void clear(java.lang.Object userID)

Clears cached recommendations for the given user.

Parameters:
userID - clear cached data associated with this user ID

clear

public void clear()

Clears all cached recommendations.


toString

@NotNull
public java.lang.String toString()
Overrides:
toString in class java.lang.Object