org.apache.mahout.cf.taste.impl.recommender.slopeone.file
Class FileDiffStorage

java.lang.Object
  extended by org.apache.mahout.cf.taste.impl.recommender.slopeone.file.FileDiffStorage
All Implemented Interfaces:
Refreshable, DiffStorage

public final class FileDiffStorage
extends java.lang.Object
implements DiffStorage

DiffStorage which reads pre-computed diffs from a file and stores in memory. The file should have one diff per line:

itemID1,itemID2,diff

Commas or tabs can be delimiters. This is intended for use in conjuction with the output of SlopeOneAverageDiffsJob.


Constructor Summary
FileDiffStorage(java.io.File dataFile, long maxEntries)
           
 
Method Summary
 RunningAverage getAverageItemPref(long itemID)
           
 RunningAverage getDiff(long itemID1, long itemID2)
           
 RunningAverage[] getDiffs(long userID, long itemID, PreferenceArray prefs)
           
 FastIDSet getRecommendableItemIDs(long userID)
           
 void refresh(java.util.Collection<Refreshable> alreadyRefreshed)
           Triggers "refresh" -- whatever that means -- of the implementation.
 void updateItemPref(long itemID, float prefDelta, boolean remove)
           Updates internal data structures to reflect an update in a preference value for an item.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

FileDiffStorage

public FileDiffStorage(java.io.File dataFile,
                       long maxEntries)
                throws java.io.FileNotFoundException
Parameters:
dataFile - diffs file
maxEntries - maximum number of diffs to store
Throws:
java.io.FileNotFoundException - if data file does not exist or is a directory
Method Detail

getDiff

public RunningAverage getDiff(long itemID1,
                              long itemID2)
Specified by:
getDiff in interface DiffStorage
Returns:
RunningAverage encapsulating the average difference in preferences between items corresponding to itemID1 and itemID2, in that direction; that is, it's the average of item 2's preferences minus item 1's preferences

getDiffs

public RunningAverage[] getDiffs(long userID,
                                 long itemID,
                                 PreferenceArray prefs)
Specified by:
getDiffs in interface DiffStorage
Parameters:
userID - user ID to get diffs for
itemID - itemID to assess
prefs - user's preferendces
Returns:
RunningAverages for that user's item-item diffs

getAverageItemPref

public RunningAverage getAverageItemPref(long itemID)
Specified by:
getAverageItemPref in interface DiffStorage
Returns:
RunningAverage encapsulating the average preference for the given item

updateItemPref

public void updateItemPref(long itemID,
                           float prefDelta,
                           boolean remove)
Description copied from interface: DiffStorage

Updates internal data structures to reflect an update in a preference value for an item.

Specified by:
updateItemPref in interface DiffStorage
Parameters:
itemID - item to update preference value for
prefDelta - amount by which preference value changed (or its old value, if being removed
remove - if true, operation reflects a removal rather than change of preference

getRecommendableItemIDs

public FastIDSet getRecommendableItemIDs(long userID)
Specified by:
getRecommendableItemIDs in interface DiffStorage
Returns:
item IDs that may possibly be recommended to the given user, which may not be all items since the item-item diff matrix may be sparse

refresh

public void refresh(java.util.Collection<Refreshable> alreadyRefreshed)
Description copied from interface: Refreshable

Triggers "refresh" -- whatever that means -- of the implementation. The general contract is that any 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
Parameters:
alreadyRefreshed - s that are known to have already been refreshed as a result of an initial call to a method on some object. This ensure that objects in a refresh dependency graph aren't refreshed twice needlessly.


Copyright © 2008-2010 The Apache Software Foundation. All Rights Reserved.