Author: srowen Date: Mon Apr 5 06:26:00 2010 New Revision: 930805 URL: http://svn.apache.org/viewvc?rev=930805&view=rev Log: MAHOUT-362 Fix test location and merge ItemWritable/UserWritable into EntityWritable
Added: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/EntityPrefWritable.java - copied, changed from r930802, lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/ItemPrefWritable.java lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/EntityWritable.java - copied, changed from r930802, lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/ItemWritable.java lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/hadoop/similarity/item/ lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/hadoop/similarity/item/ItemSimilarityTest.java - copied, changed from r930802, lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/hadoop/similarity/ItemSimilarityTest.java Removed: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/ItemPrefWritable.java lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/ItemWritable.java lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/writables/UserPrefWritable.java lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/writables/UserWritable.java lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/hadoop/similarity/ItemSimilarityTest.java Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/ToItemPrefsMapper.java lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/item/RecommenderJob.java lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/item/ToUserVectorReducer.java lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/CopreferredItemsMapper.java lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/ItemSimilarityJob.java lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/PreferredItemsPerUserMapper.java lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/PreferredItemsPerUserReducer.java lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/ToItemVectorReducer.java lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/UserPrefsPerItemMapper.java lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/writables/UserPrefArrayWritable.java lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/slopeone/ByItemIDComparator.java lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/slopeone/SlopeOneAverageDiffsJob.java lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/slopeone/SlopeOnePrefsToDiffsReducer.java Copied: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/EntityPrefWritable.java (from r930802, lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/ItemPrefWritable.java) URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/EntityPrefWritable.java?p2=lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/EntityPrefWritable.java&p1=lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/ItemPrefWritable.java&r1=930802&r2=930805&rev=930805&view=diff ============================================================================== --- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/ItemPrefWritable.java (original) +++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/EntityPrefWritable.java Mon Apr 5 06:26:00 2010 @@ -22,25 +22,24 @@ import java.io.DataOutput; import java.io.IOException; import org.apache.hadoop.io.Writable; -import org.apache.hadoop.io.WritableComparable; import org.apache.mahout.common.RandomUtils; /** A {...@link Writable} encapsulating an item ID and a preference value. */ -public final class ItemPrefWritable extends ItemWritable implements WritableComparable<ItemPrefWritable> { +public final class EntityPrefWritable extends EntityWritable { private float prefValue; - public ItemPrefWritable() { + public EntityPrefWritable() { // do nothing } - public ItemPrefWritable(long itemID, float prefValue) { + public EntityPrefWritable(long itemID, float prefValue) { super(itemID); this.prefValue = prefValue; } - public ItemPrefWritable(ItemPrefWritable other) { - this(other.getItemID(), other.getPrefValue()); + public EntityPrefWritable(EntityPrefWritable other) { + this(other.getID(), other.getPrefValue()); } public float getPrefValue() { @@ -59,8 +58,8 @@ public final class ItemPrefWritable exte prefValue = in.readFloat(); } - public static ItemPrefWritable read(DataInput in) throws IOException { - ItemPrefWritable writable = new ItemPrefWritable(); + public static EntityPrefWritable read(DataInput in) throws IOException { + EntityPrefWritable writable = new EntityPrefWritable(); writable.readFields(in); return writable; } @@ -72,12 +71,16 @@ public final class ItemPrefWritable exte @Override public boolean equals(Object o) { - if (!(o instanceof ItemPrefWritable)) { + if (!(o instanceof EntityPrefWritable)) { return false; } - ItemPrefWritable other = (ItemPrefWritable) o; - return getItemID() == other.getItemID() && prefValue == other.getPrefValue(); - + EntityPrefWritable other = (EntityPrefWritable) o; + return getID() == other.getID() && prefValue == other.getPrefValue(); + } + + @Override + public EntityPrefWritable clone() { + return new EntityPrefWritable(getID(), prefValue); } } \ No newline at end of file Copied: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/EntityWritable.java (from r930802, lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/ItemWritable.java) URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/EntityWritable.java?p2=lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/EntityWritable.java&p1=lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/ItemWritable.java&r1=930802&r2=930805&rev=930805&view=diff ============================================================================== --- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/ItemWritable.java (original) +++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/EntityWritable.java Mon Apr 5 06:26:00 2010 @@ -26,56 +26,61 @@ import org.apache.hadoop.io.WritableComp import org.apache.mahout.common.RandomUtils; /** A {...@link Writable} encapsulating an item ID. */ -public class ItemWritable implements WritableComparable<ItemWritable> { +public class EntityWritable implements WritableComparable<EntityWritable>, Cloneable { - private long itemID; + private long ID; - public ItemWritable() { + public EntityWritable() { // do nothing } - public ItemWritable(long itemID) { - this.itemID = itemID; + public EntityWritable(long ID) { + this.ID = ID; } - public ItemWritable(ItemWritable other) { - this(other.getItemID()); + public EntityWritable(EntityWritable other) { + this(other.getID()); } - public long getItemID() { - return itemID; + public long getID() { + return ID; } @Override public void write(DataOutput out) throws IOException { - out.writeLong(itemID); + out.writeLong(ID); } @Override public void readFields(DataInput in) throws IOException { - itemID = in.readLong(); + ID = in.readLong(); } - public static ItemWritable read(DataInput in) throws IOException { - ItemWritable writable = new ItemWritable(); + public static EntityWritable read(DataInput in) throws IOException { + EntityWritable writable = new EntityWritable(); writable.readFields(in); return writable; } @Override - public int compareTo(ItemWritable other) { - long otherItemID = other.getItemID(); - return itemID < otherItemID ? -1 : itemID > otherItemID ? 1 : 0; + public int compareTo(EntityWritable other) { + long otherItemID = other.getID(); + return ID < otherItemID ? -1 : ID > otherItemID ? 1 : 0; } @Override public int hashCode() { - return RandomUtils.hashLong(itemID); + return RandomUtils.hashLong(ID); } @Override public boolean equals(Object o) { - return o instanceof ItemWritable && (itemID == ((ItemWritable) o).getItemID()); + return o instanceof EntityWritable && (ID == ((EntityWritable) o).getID()); + } + + @Override + public EntityWritable clone() { + return new EntityWritable(ID); } } \ No newline at end of file Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/ToItemPrefsMapper.java URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/ToItemPrefsMapper.java?rev=930805&r1=930804&r2=930805&view=diff ============================================================================== --- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/ToItemPrefsMapper.java (original) +++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/ToItemPrefsMapper.java Mon Apr 5 06:26:00 2010 @@ -46,11 +46,11 @@ import org.apache.mahout.cf.taste.hadoop * * <p> * Outputs the user ID as a {...@link LongWritable} mapped to the item ID and preference as a - * {...@link ItemPrefWritable}. + * {...@link EntityPrefWritable}. * </p> */ public final class ToItemPrefsMapper extends MapReduceBase implements - Mapper<LongWritable,Text,LongWritable,ItemWritable> { + Mapper<LongWritable,Text,LongWritable, EntityWritable> { private static final Pattern COMMA = Pattern.compile(","); @@ -64,16 +64,16 @@ public final class ToItemPrefsMapper ext @Override public void map(LongWritable key, Text value, - OutputCollector<LongWritable,ItemWritable> output, + OutputCollector<LongWritable, EntityWritable> output, Reporter reporter) throws IOException { String[] tokens = ToItemPrefsMapper.COMMA.split(value.toString()); long userID = Long.parseLong(tokens[0]); long itemID = Long.parseLong(tokens[1]); if (booleanData) { - output.collect(new LongWritable(userID), new ItemWritable(itemID)); + output.collect(new LongWritable(userID), new EntityWritable(itemID)); } else { float prefValue = tokens.length > 2 ? Float.parseFloat(tokens[2]) : 1.0f; - output.collect(new LongWritable(userID), new ItemPrefWritable(itemID, prefValue)); + output.collect(new LongWritable(userID), new EntityPrefWritable(itemID, prefValue)); } } Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/item/RecommenderJob.java URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/item/RecommenderJob.java?rev=930805&r1=930804&r2=930805&view=diff ============================================================================== --- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/item/RecommenderJob.java (original) +++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/item/RecommenderJob.java Mon Apr 5 06:26:00 2010 @@ -35,9 +35,9 @@ import org.apache.hadoop.mapred.TextInpu import org.apache.hadoop.mapred.TextOutputFormat; import org.apache.hadoop.mapred.lib.IdentityReducer; import org.apache.hadoop.util.ToolRunner; -import org.apache.mahout.cf.taste.hadoop.ItemWritable; +import org.apache.mahout.cf.taste.hadoop.EntityPrefWritable; +import org.apache.mahout.cf.taste.hadoop.EntityWritable; import org.apache.mahout.common.AbstractJob; -import org.apache.mahout.cf.taste.hadoop.ItemPrefWritable; import org.apache.mahout.cf.taste.hadoop.RecommendedItemsWritable; import org.apache.mahout.cf.taste.hadoop.ToItemPrefsMapper; import org.apache.mahout.math.VectorWritable; @@ -100,7 +100,7 @@ public final class RecommenderJob extend JobConf toUserVectorConf = prepareJobConf(inputPath, userVectorPath, TextInputFormat.class, ToItemPrefsMapper.class, LongWritable.class, - booleanData ? ItemWritable.class : ItemPrefWritable.class, + booleanData ? EntityWritable.class : EntityPrefWritable.class, ToUserVectorReducer.class, LongWritable.class, VectorWritable.class, SequenceFileOutputFormat.class); toUserVectorConf.setBoolean(BOOLEAN_DATA, booleanData); JobClient.runJob(toUserVectorConf); Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/item/ToUserVectorReducer.java URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/item/ToUserVectorReducer.java?rev=930805&r1=930804&r2=930805&view=diff ============================================================================== --- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/item/ToUserVectorReducer.java (original) +++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/item/ToUserVectorReducer.java Mon Apr 5 06:26:00 2010 @@ -28,8 +28,8 @@ import org.apache.hadoop.mapred.MapReduc import org.apache.hadoop.mapred.OutputCollector; import org.apache.hadoop.mapred.Reducer; import org.apache.hadoop.mapred.Reporter; -import org.apache.mahout.cf.taste.hadoop.ItemPrefWritable; -import org.apache.mahout.cf.taste.hadoop.ItemWritable; +import org.apache.mahout.cf.taste.hadoop.EntityPrefWritable; +import org.apache.mahout.cf.taste.hadoop.EntityWritable; import org.apache.mahout.math.RandomAccessSparseVector; import org.apache.mahout.math.Vector; import org.apache.mahout.math.VectorWritable; @@ -39,7 +39,7 @@ import org.apache.mahout.math.VectorWrit * * <p> * Takes user IDs as {...@link LongWritable} mapped to all associated item IDs and preference values, as - * {...@link ItemPrefWritable}s. + * {...@link EntityPrefWritable}s. * </p> * * <h1>Output</h1> @@ -58,7 +58,7 @@ import org.apache.mahout.math.VectorWrit * */ public final class ToUserVectorReducer extends MapReduceBase implements - Reducer<LongWritable,ItemWritable,LongWritable,VectorWritable> { + Reducer<LongWritable, EntityWritable,LongWritable,VectorWritable> { public static final int MAX_PREFS_CONSIDERED = 20; @@ -72,17 +72,17 @@ public final class ToUserVectorReducer e @Override public void reduce(LongWritable userID, - Iterator<ItemWritable> itemPrefs, + Iterator<EntityWritable> itemPrefs, OutputCollector<LongWritable,VectorWritable> output, Reporter reporter) throws IOException { if (itemPrefs.hasNext()) { RandomAccessSparseVector userVector = new RandomAccessSparseVector(Integer.MAX_VALUE, 100); while (itemPrefs.hasNext()) { - ItemWritable itemPref = itemPrefs.next(); - int index = ItemIDIndexMapper.idToIndex(itemPref.getItemID()); + EntityWritable itemPref = itemPrefs.next(); + int index = ItemIDIndexMapper.idToIndex(itemPref.getID()); float value; - if (itemPref instanceof ItemPrefWritable) { - value = ((ItemPrefWritable) itemPref).getPrefValue(); + if (itemPref instanceof EntityPrefWritable) { + value = ((EntityPrefWritable) itemPref).getPrefValue(); } else { value = 1.0f; } Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/CopreferredItemsMapper.java URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/CopreferredItemsMapper.java?rev=930805&r1=930804&r2=930805&view=diff ============================================================================== --- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/CopreferredItemsMapper.java (original) +++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/CopreferredItemsMapper.java Mon Apr 5 06:26:00 2010 @@ -21,20 +21,20 @@ import java.io.IOException; import org.apache.hadoop.io.FloatWritable; import org.apache.hadoop.mapreduce.Mapper; +import org.apache.mahout.cf.taste.hadoop.EntityWritable; import org.apache.mahout.cf.taste.hadoop.similarity.item.writables.ItemPairWritable; import org.apache.mahout.cf.taste.hadoop.similarity.item.writables.ItemPrefWithLengthArrayWritable; import org.apache.mahout.cf.taste.hadoop.similarity.item.writables.ItemPrefWithLengthWritable; -import org.apache.mahout.cf.taste.hadoop.similarity.item.writables.UserWritable; /** * map out each pair of items that appears in the same user-vector together with the multiplied vector lengths * of the associated item vectors */ public final class CopreferredItemsMapper - extends Mapper<UserWritable,ItemPrefWithLengthArrayWritable,ItemPairWritable,FloatWritable> { + extends Mapper<EntityWritable,ItemPrefWithLengthArrayWritable,ItemPairWritable,FloatWritable> { @Override - protected void map(UserWritable user, ItemPrefWithLengthArrayWritable itemPrefsArray, Context context) + protected void map(EntityWritable user, ItemPrefWithLengthArrayWritable itemPrefsArray, Context context) throws IOException, InterruptedException { ItemPrefWithLengthWritable[] itemPrefs = itemPrefsArray.getItemPrefs(); Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/ItemSimilarityJob.java URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/ItemSimilarityJob.java?rev=930805&r1=930804&r2=930805&view=diff ============================================================================== --- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/ItemSimilarityJob.java (original) +++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/ItemSimilarityJob.java Mon Apr 5 06:26:00 2010 @@ -36,14 +36,13 @@ import org.apache.hadoop.mapreduce.lib.o import org.apache.hadoop.mapreduce.lib.output.SequenceFileOutputFormat; import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat; import org.apache.hadoop.util.ToolRunner; +import org.apache.mahout.cf.taste.hadoop.EntityPrefWritable; +import org.apache.mahout.cf.taste.hadoop.EntityWritable; import org.apache.mahout.cf.taste.hadoop.ItemItemWritable; -import org.apache.mahout.cf.taste.hadoop.ItemWritable; import org.apache.mahout.cf.taste.hadoop.similarity.item.writables.ItemPairWritable; import org.apache.mahout.cf.taste.hadoop.similarity.item.writables.ItemPrefWithLengthArrayWritable; import org.apache.mahout.cf.taste.hadoop.similarity.item.writables.ItemPrefWithLengthWritable; import org.apache.mahout.cf.taste.hadoop.similarity.item.writables.UserPrefArrayWritable; -import org.apache.mahout.cf.taste.hadoop.similarity.item.writables.UserPrefWritable; -import org.apache.mahout.cf.taste.hadoop.similarity.item.writables.UserWritable; import org.apache.mahout.common.AbstractJob; /** @@ -123,14 +122,14 @@ public final class ItemSimilarityJob ext String userVectorsPath = tempDirPath + "/userVectors"; Job itemVectors = createJob(originalConf, "itemVectors", inputPath, itemVectorsPath, UserPrefsPerItemMapper.class, - ItemWritable.class, UserPrefWritable.class, ToItemVectorReducer.class, ItemWritable.class, + EntityWritable.class, EntityPrefWritable.class, ToItemVectorReducer.class, EntityWritable.class, UserPrefArrayWritable.class, TextInputFormat.class, SequenceFileOutputFormat.class, true); itemVectors.waitForCompletion(true); Job userVectors = createJob(originalConf, "userVectors", itemVectorsPath, userVectorsPath, - PreferredItemsPerUserMapper.class, UserWritable.class, ItemPrefWithLengthWritable.class, - PreferredItemsPerUserReducer.class, UserWritable.class, ItemPrefWithLengthArrayWritable.class); + PreferredItemsPerUserMapper.class, EntityWritable.class, ItemPrefWithLengthWritable.class, + PreferredItemsPerUserReducer.class, EntityWritable.class, ItemPrefWithLengthArrayWritable.class); userVectors.waitForCompletion(true); Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/PreferredItemsPerUserMapper.java URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/PreferredItemsPerUserMapper.java?rev=930805&r1=930804&r2=930805&view=diff ============================================================================== --- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/PreferredItemsPerUserMapper.java (original) +++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/PreferredItemsPerUserMapper.java Mon Apr 5 06:26:00 2010 @@ -20,36 +20,35 @@ package org.apache.mahout.cf.taste.hadoo import java.io.IOException; import org.apache.hadoop.mapreduce.Mapper; -import org.apache.mahout.cf.taste.hadoop.ItemWritable; +import org.apache.mahout.cf.taste.hadoop.EntityPrefWritable; +import org.apache.mahout.cf.taste.hadoop.EntityWritable; import org.apache.mahout.cf.taste.hadoop.similarity.item.writables.ItemPrefWithLengthWritable; import org.apache.mahout.cf.taste.hadoop.similarity.item.writables.UserPrefArrayWritable; -import org.apache.mahout.cf.taste.hadoop.similarity.item.writables.UserPrefWritable; -import org.apache.mahout.cf.taste.hadoop.similarity.item.writables.UserWritable; /** * for each item-vector, we compute its length here and map out all entries with the user as key, * so we can create the user-vectors in the reducer */ public final class PreferredItemsPerUserMapper - extends Mapper<ItemWritable,UserPrefArrayWritable,UserWritable,ItemPrefWithLengthWritable> { + extends Mapper<EntityWritable,UserPrefArrayWritable,EntityWritable,ItemPrefWithLengthWritable> { @Override - protected void map(ItemWritable item, UserPrefArrayWritable userPrefsArray, Context context) + protected void map(EntityWritable item, UserPrefArrayWritable userPrefsArray, Context context) throws IOException, InterruptedException { - UserPrefWritable[] userPrefs = userPrefsArray.getUserPrefs(); + EntityPrefWritable[] userPrefs = userPrefsArray.getUserPrefs(); double length = 0.0; - for (UserPrefWritable userPref : userPrefs) { + for (EntityPrefWritable userPref : userPrefs) { double value = userPref.getPrefValue(); length += value * value; } length = Math.sqrt(length); - for (UserPrefWritable userPref : userPrefs) { - context.write(new UserWritable(userPref.getUserID()), - new ItemPrefWithLengthWritable(item.getItemID(), length, userPref.getPrefValue())); + for (EntityPrefWritable userPref : userPrefs) { + context.write(new EntityWritable(userPref.getID()), + new ItemPrefWithLengthWritable(item.getID(), length, userPref.getPrefValue())); } } Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/PreferredItemsPerUserReducer.java URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/PreferredItemsPerUserReducer.java?rev=930805&r1=930804&r2=930805&view=diff ============================================================================== --- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/PreferredItemsPerUserReducer.java (original) +++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/PreferredItemsPerUserReducer.java Mon Apr 5 06:26:00 2010 @@ -22,15 +22,15 @@ import java.util.HashSet; import java.util.Set; import org.apache.hadoop.mapreduce.Reducer; +import org.apache.mahout.cf.taste.hadoop.EntityWritable; import org.apache.mahout.cf.taste.hadoop.similarity.item.writables.ItemPrefWithLengthArrayWritable; import org.apache.mahout.cf.taste.hadoop.similarity.item.writables.ItemPrefWithLengthWritable; -import org.apache.mahout.cf.taste.hadoop.similarity.item.writables.UserWritable; public final class PreferredItemsPerUserReducer - extends Reducer<UserWritable,ItemPrefWithLengthWritable,UserWritable,ItemPrefWithLengthArrayWritable> { + extends Reducer<EntityWritable,ItemPrefWithLengthWritable, EntityWritable,ItemPrefWithLengthArrayWritable> { @Override - protected void reduce(UserWritable user, Iterable<ItemPrefWithLengthWritable> itemPrefs, Context context) + protected void reduce(EntityWritable user, Iterable<ItemPrefWithLengthWritable> itemPrefs, Context context) throws IOException, InterruptedException { Set<ItemPrefWithLengthWritable> itemPrefsWithLength = new HashSet<ItemPrefWithLengthWritable>(); Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/ToItemVectorReducer.java URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/ToItemVectorReducer.java?rev=930805&r1=930804&r2=930805&view=diff ============================================================================== --- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/ToItemVectorReducer.java (original) +++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/ToItemVectorReducer.java Mon Apr 5 06:26:00 2010 @@ -22,29 +22,29 @@ import java.util.HashSet; import java.util.Set; import org.apache.hadoop.mapreduce.Reducer; -import org.apache.mahout.cf.taste.hadoop.ItemWritable; +import org.apache.mahout.cf.taste.hadoop.EntityPrefWritable; +import org.apache.mahout.cf.taste.hadoop.EntityWritable; import org.apache.mahout.cf.taste.hadoop.similarity.item.writables.UserPrefArrayWritable; -import org.apache.mahout.cf.taste.hadoop.similarity.item.writables.UserPrefWritable; /** * For each single item, collect all users with their preferences * (thereby building the item vectors of the user-item-matrix) */ public final class ToItemVectorReducer - extends Reducer<ItemWritable,UserPrefWritable,ItemWritable,UserPrefArrayWritable> { + extends Reducer<EntityWritable, EntityPrefWritable, EntityWritable,UserPrefArrayWritable> { @Override - protected void reduce(ItemWritable item, Iterable<UserPrefWritable> userPrefs, Context context) + protected void reduce(EntityWritable item, Iterable<EntityPrefWritable> userPrefs, Context context) throws IOException, InterruptedException { - Set<UserPrefWritable> collectedUserPrefs = new HashSet<UserPrefWritable>(); + Set<EntityPrefWritable> collectedUserPrefs = new HashSet<EntityPrefWritable>(); - for (UserPrefWritable userPref : userPrefs) { - collectedUserPrefs.add(userPref.deepCopy()); + for (EntityPrefWritable userPref : userPrefs) { + collectedUserPrefs.add(userPref.clone()); } context.write(item, new UserPrefArrayWritable( - collectedUserPrefs.toArray(new UserPrefWritable[collectedUserPrefs.size()]))); + collectedUserPrefs.toArray(new EntityPrefWritable[collectedUserPrefs.size()]))); } } Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/UserPrefsPerItemMapper.java URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/UserPrefsPerItemMapper.java?rev=930805&r1=930804&r2=930805&view=diff ============================================================================== --- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/UserPrefsPerItemMapper.java (original) +++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/UserPrefsPerItemMapper.java Mon Apr 5 06:26:00 2010 @@ -23,14 +23,14 @@ import java.util.regex.Pattern; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Mapper; -import org.apache.mahout.cf.taste.hadoop.ItemWritable; -import org.apache.mahout.cf.taste.hadoop.similarity.item.writables.UserPrefWritable; +import org.apache.mahout.cf.taste.hadoop.EntityPrefWritable; +import org.apache.mahout.cf.taste.hadoop.EntityWritable; /** * Read an entry from the preferences file and map it out with the item as key and the user with her preference * as value */ -public final class UserPrefsPerItemMapper extends Mapper<LongWritable,Text,ItemWritable,UserPrefWritable> { +public final class UserPrefsPerItemMapper extends Mapper<LongWritable,Text, EntityWritable, EntityPrefWritable> { private static final Pattern COMMA = Pattern.compile(","); @@ -44,7 +44,7 @@ public final class UserPrefsPerItemMappe long itemID = Long.parseLong(tokens[1]); float pref = Float.parseFloat(tokens[2]); - context.write(new ItemWritable(itemID), new UserPrefWritable(userID,pref)); + context.write(new EntityWritable(itemID), new EntityPrefWritable(userID,pref)); } Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/writables/UserPrefArrayWritable.java URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/writables/UserPrefArrayWritable.java?rev=930805&r1=930804&r2=930805&view=diff ============================================================================== --- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/writables/UserPrefArrayWritable.java (original) +++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/writables/UserPrefArrayWritable.java Mon Apr 5 06:26:00 2010 @@ -18,23 +18,24 @@ package org.apache.mahout.cf.taste.hadoop.similarity.item.writables; import org.apache.hadoop.io.ArrayWritable; +import org.apache.mahout.cf.taste.hadoop.EntityPrefWritable; /** - * An {...@link ArrayWritable} holding {...@link UserPrefWritable}s + * An {...@link ArrayWritable} holding {...@link EntityPrefWritable}s * * Used to represent an item-vector */ public final class UserPrefArrayWritable extends ArrayWritable { public UserPrefArrayWritable() { - super(UserPrefWritable.class); + super(EntityPrefWritable.class); } - public UserPrefArrayWritable(UserPrefWritable[] userPrefs) { - super(UserPrefWritable.class, userPrefs); + public UserPrefArrayWritable(EntityPrefWritable[] userPrefs) { + super(EntityPrefWritable.class, userPrefs); } - public UserPrefWritable[] getUserPrefs() { - return (UserPrefWritable[]) toArray(); + public EntityPrefWritable[] getUserPrefs() { + return (EntityPrefWritable[]) toArray(); } } Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/slopeone/ByItemIDComparator.java URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/slopeone/ByItemIDComparator.java?rev=930805&r1=930804&r2=930805&view=diff ============================================================================== --- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/slopeone/ByItemIDComparator.java (original) +++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/slopeone/ByItemIDComparator.java Mon Apr 5 06:26:00 2010 @@ -20,20 +20,20 @@ package org.apache.mahout.cf.taste.hadoo import java.io.Serializable; import java.util.Comparator; -import org.apache.mahout.cf.taste.hadoop.ItemPrefWritable; +import org.apache.mahout.cf.taste.hadoop.EntityPrefWritable; -final class ByItemIDComparator implements Comparator<ItemPrefWritable>, Serializable { +final class ByItemIDComparator implements Comparator<EntityPrefWritable>, Serializable { - private static final Comparator<ItemPrefWritable> instance = new ByItemIDComparator(); + private static final Comparator<EntityPrefWritable> instance = new ByItemIDComparator(); - public static Comparator<ItemPrefWritable> getInstance() { + public static Comparator<EntityPrefWritable> getInstance() { return instance; } @Override - public int compare(ItemPrefWritable a, ItemPrefWritable b) { - long idA = a.getItemID(); - long idB = b.getItemID(); + public int compare(EntityPrefWritable a, EntityPrefWritable b) { + long idA = a.getID(); + long idB = b.getID(); return idA < idB ? -1 : idA > idB ? 1 : 0; } Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/slopeone/SlopeOneAverageDiffsJob.java URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/slopeone/SlopeOneAverageDiffsJob.java?rev=930805&r1=930804&r2=930805&view=diff ============================================================================== --- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/slopeone/SlopeOneAverageDiffsJob.java (original) +++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/slopeone/SlopeOneAverageDiffsJob.java Mon Apr 5 06:26:00 2010 @@ -35,7 +35,7 @@ import org.apache.hadoop.mapred.lib.Iden import org.apache.hadoop.util.ToolRunner; import org.apache.mahout.common.AbstractJob; import org.apache.mahout.cf.taste.hadoop.ItemItemWritable; -import org.apache.mahout.cf.taste.hadoop.ItemPrefWritable; +import org.apache.mahout.cf.taste.hadoop.EntityPrefWritable; import org.apache.mahout.cf.taste.hadoop.ToItemPrefsMapper; public final class SlopeOneAverageDiffsJob extends AbstractJob { @@ -54,7 +54,7 @@ public final class SlopeOneAverageDiffsJ String averagesOutputPath = parsedArgs.get("--tempDir"); JobConf prefsToDiffsJobConf = prepareJobConf(prefsFile, averagesOutputPath, - TextInputFormat.class, ToItemPrefsMapper.class, LongWritable.class, ItemPrefWritable.class, + TextInputFormat.class, ToItemPrefsMapper.class, LongWritable.class, EntityPrefWritable.class, SlopeOnePrefsToDiffsReducer.class, ItemItemWritable.class, FloatWritable.class, SequenceFileOutputFormat.class); JobClient.runJob(prefsToDiffsJobConf); Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/slopeone/SlopeOnePrefsToDiffsReducer.java URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/slopeone/SlopeOnePrefsToDiffsReducer.java?rev=930805&r1=930804&r2=930805&view=diff ============================================================================== --- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/slopeone/SlopeOnePrefsToDiffsReducer.java (original) +++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/slopeone/SlopeOnePrefsToDiffsReducer.java Mon Apr 5 06:26:00 2010 @@ -29,30 +29,30 @@ import org.apache.hadoop.mapred.MapReduc import org.apache.hadoop.mapred.OutputCollector; import org.apache.hadoop.mapred.Reducer; import org.apache.hadoop.mapred.Reporter; +import org.apache.mahout.cf.taste.hadoop.EntityPrefWritable; import org.apache.mahout.cf.taste.hadoop.ItemItemWritable; -import org.apache.mahout.cf.taste.hadoop.ItemPrefWritable; public final class SlopeOnePrefsToDiffsReducer extends MapReduceBase implements - Reducer<LongWritable,ItemPrefWritable,ItemItemWritable,FloatWritable> { + Reducer<LongWritable, EntityPrefWritable,ItemItemWritable,FloatWritable> { @Override public void reduce(LongWritable key, - Iterator<ItemPrefWritable> values, + Iterator<EntityPrefWritable> values, OutputCollector<ItemItemWritable,FloatWritable> output, Reporter reporter) throws IOException { - List<ItemPrefWritable> prefs = new ArrayList<ItemPrefWritable>(); + List<EntityPrefWritable> prefs = new ArrayList<EntityPrefWritable>(); while (values.hasNext()) { - prefs.add(new ItemPrefWritable(values.next())); + prefs.add(new EntityPrefWritable(values.next())); } Collections.sort(prefs, ByItemIDComparator.getInstance()); int size = prefs.size(); for (int i = 0; i < size; i++) { - ItemPrefWritable first = prefs.get(i); - long itemAID = first.getItemID(); + EntityPrefWritable first = prefs.get(i); + long itemAID = first.getID(); float itemAValue = first.getPrefValue(); for (int j = i + 1; j < size; j++) { - ItemPrefWritable second = prefs.get(j); - long itemBID = second.getItemID(); + EntityPrefWritable second = prefs.get(j); + long itemBID = second.getID(); float itemBValue = second.getPrefValue(); output.collect(new ItemItemWritable(itemAID, itemBID), new FloatWritable(itemBValue - itemAValue)); } Copied: lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/hadoop/similarity/item/ItemSimilarityTest.java (from r930802, lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/hadoop/similarity/ItemSimilarityTest.java) URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/hadoop/similarity/item/ItemSimilarityTest.java?p2=lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/hadoop/similarity/item/ItemSimilarityTest.java&p1=lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/hadoop/similarity/ItemSimilarityTest.java&r1=930802&r2=930805&rev=930805&view=diff ============================================================================== --- lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/hadoop/similarity/ItemSimilarityTest.java (original) +++ lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/hadoop/similarity/item/ItemSimilarityTest.java Mon Apr 5 06:26:00 2010 @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.mahout.cf.taste.hadoop.similarity; +package org.apache.mahout.cf.taste.hadoop.similarity.item; import static org.easymock.EasyMock.eq; import static org.easymock.EasyMock.expect; @@ -41,21 +41,13 @@ import org.apache.hadoop.io.LongWritable import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.Reducer; +import org.apache.mahout.cf.taste.hadoop.EntityPrefWritable; +import org.apache.mahout.cf.taste.hadoop.EntityWritable; import org.apache.mahout.cf.taste.hadoop.ItemItemWritable; -import org.apache.mahout.cf.taste.hadoop.ItemWritable; -import org.apache.mahout.cf.taste.hadoop.similarity.item.CopreferredItemsMapper; -import org.apache.mahout.cf.taste.hadoop.similarity.item.CosineSimilarityReducer; -import org.apache.mahout.cf.taste.hadoop.similarity.item.ItemSimilarityJob; -import org.apache.mahout.cf.taste.hadoop.similarity.item.PreferredItemsPerUserMapper; -import org.apache.mahout.cf.taste.hadoop.similarity.item.PreferredItemsPerUserReducer; -import org.apache.mahout.cf.taste.hadoop.similarity.item.ToItemVectorReducer; -import org.apache.mahout.cf.taste.hadoop.similarity.item.UserPrefsPerItemMapper; import org.apache.mahout.cf.taste.hadoop.similarity.item.writables.ItemPairWritable; import org.apache.mahout.cf.taste.hadoop.similarity.item.writables.ItemPrefWithLengthArrayWritable; import org.apache.mahout.cf.taste.hadoop.similarity.item.writables.ItemPrefWithLengthWritable; import org.apache.mahout.cf.taste.hadoop.similarity.item.writables.UserPrefArrayWritable; -import org.apache.mahout.cf.taste.hadoop.similarity.item.writables.UserPrefWritable; -import org.apache.mahout.cf.taste.hadoop.similarity.item.writables.UserWritable; import org.apache.mahout.common.MahoutTestCase; import org.easymock.IArgumentMatcher; import org.easymock.classextension.EasyMock; @@ -65,13 +57,12 @@ import org.easymock.classextension.EasyM * Integration test with a mini-file at the end * */ -...@suppresswarnings("unchecked") public class ItemSimilarityTest extends MahoutTestCase { public void testUserPrefsPerItemMapper() throws Exception { Mapper.Context ctx = createMock(Mapper.Context.class); - ctx.write(new ItemWritable(34l), new UserPrefWritable(12l, 2.3f)); + ctx.write(new EntityWritable(34L), new EntityPrefWritable(12L, 2.3f)); replay(ctx); new UserPrefsPerItemMapper().map(new LongWritable(), new Text("12,34,2.3"), ctx); @@ -81,35 +72,33 @@ public class ItemSimilarityTest extends public void testToItemVectorReducer() throws Exception { - List<UserPrefWritable> userPrefs = Arrays.asList(new UserPrefWritable(34l, 1f), new UserPrefWritable(56l, 2f)); + List<EntityPrefWritable> userPrefs = Arrays.asList(new EntityPrefWritable(34L, 1.0f), new EntityPrefWritable(56L, 2.0f)); Reducer.Context ctx = createMock(Reducer.Context.class); - ctx.write(eq(new ItemWritable(12l)), equalToUserPrefs(userPrefs)); + ctx.write(eq(new EntityWritable(12L)), equalToUserPrefs(userPrefs)); replay(ctx); - new ToItemVectorReducer().reduce(new ItemWritable(12l), userPrefs, ctx); + new ToItemVectorReducer().reduce(new EntityWritable(12L), userPrefs, ctx); verify(ctx); } - static UserPrefArrayWritable equalToUserPrefs(final Collection<UserPrefWritable> prefsToCheck) { + static UserPrefArrayWritable equalToUserPrefs(final Collection<EntityPrefWritable> prefsToCheck) { EasyMock.reportMatcher(new IArgumentMatcher() { @Override public boolean matches(Object argument) { if (argument instanceof UserPrefArrayWritable) { UserPrefArrayWritable userPrefArray = (UserPrefArrayWritable) argument; - Set<UserPrefWritable> set = new HashSet<UserPrefWritable>(); - for (UserPrefWritable userPref : userPrefArray.getUserPrefs()) { - set.add(userPref); - } + Set<EntityPrefWritable> set = new HashSet<EntityPrefWritable>(); + set.addAll(Arrays.asList(userPrefArray.getUserPrefs())); if (set.size() != prefsToCheck.size()) { return false; } - for (UserPrefWritable prefToCheck : prefsToCheck) { + for (EntityPrefWritable prefToCheck : prefsToCheck) { if (!set.contains(prefToCheck)) { return false; } @@ -131,16 +120,16 @@ public class ItemSimilarityTest extends UserPrefArrayWritable userPrefs = createMock(UserPrefArrayWritable.class); expect(userPrefs.getUserPrefs()) - .andReturn(new UserPrefWritable[] { new UserPrefWritable(12l, 2f), new UserPrefWritable(56l, 3f) }); + .andReturn(new EntityPrefWritable[] { new EntityPrefWritable(12L, 2.0f), new EntityPrefWritable(56L, 3.0f) }); - double length = Math.sqrt(Math.pow(2f, 2) + Math.pow(3f, 2)); + double length = Math.sqrt(Math.pow(2.0f, 2) + Math.pow(3.0f, 2)); - ctx.write(new UserWritable(12l), new ItemPrefWithLengthWritable(34l, length, 2f)); - ctx.write(new UserWritable(56l), new ItemPrefWithLengthWritable(34l, length, 3f)); + ctx.write(new EntityWritable(12L), new ItemPrefWithLengthWritable(34L, length, 2.0f)); + ctx.write(new EntityWritable(56L), new ItemPrefWithLengthWritable(34L, length, 3.0f)); replay(ctx, userPrefs); - new PreferredItemsPerUserMapper().map(new ItemWritable(34l), userPrefs, ctx); + new PreferredItemsPerUserMapper().map(new EntityWritable(34L), userPrefs, ctx); verify(ctx, userPrefs); } @@ -148,15 +137,15 @@ public class ItemSimilarityTest extends public void testPreferredItemsPerUserReducer() throws Exception { List<ItemPrefWithLengthWritable> itemPrefs = - Arrays.asList(new ItemPrefWithLengthWritable(34l, 5d, 1f), new ItemPrefWithLengthWritable(56l, 7d, 2f)); + Arrays.asList(new ItemPrefWithLengthWritable(34L, 5.0, 1.0f), new ItemPrefWithLengthWritable(56L, 7.0, 2.0f)); Reducer.Context ctx = createMock(Reducer.Context.class); - ctx.write(eq(new UserWritable(12l)), equalToItemPrefs(itemPrefs)); + ctx.write(eq(new EntityWritable(12L)), equalToItemPrefs(itemPrefs)); replay(ctx); - new PreferredItemsPerUserReducer().reduce(new UserWritable(12l), itemPrefs, ctx); + new PreferredItemsPerUserReducer().reduce(new EntityWritable(12L), itemPrefs, ctx); verify(ctx); } @@ -198,16 +187,16 @@ public class ItemSimilarityTest extends ItemPrefWithLengthArrayWritable itemPrefs = createMock(ItemPrefWithLengthArrayWritable.class); expect(itemPrefs.getItemPrefs()).andReturn(new ItemPrefWithLengthWritable[] { - new ItemPrefWithLengthWritable(34l, 2d, 1f), new ItemPrefWithLengthWritable(56l, 3d, 2f), - new ItemPrefWithLengthWritable(78l, 4d, 3f) }); + new ItemPrefWithLengthWritable(34L, 2.0, 1.0f), new ItemPrefWithLengthWritable(56L, 3.0, 2.0f), + new ItemPrefWithLengthWritable(78L, 4.0, 3.0f) }); - ctx.write(new ItemPairWritable(34l, 56l, 6d), new FloatWritable(2f)); - ctx.write(new ItemPairWritable(34l, 78l, 8d), new FloatWritable(3f)); - ctx.write(new ItemPairWritable(56l, 78l, 12d), new FloatWritable(6f)); + ctx.write(new ItemPairWritable(34L, 56L, 6.0), new FloatWritable(2.0f)); + ctx.write(new ItemPairWritable(34L, 78L, 8.0), new FloatWritable(3.0f)); + ctx.write(new ItemPairWritable(56L, 78L, 12.0), new FloatWritable(6.0f)); replay(ctx, itemPrefs); - new CopreferredItemsMapper().map(new UserWritable(), itemPrefs, ctx); + new CopreferredItemsMapper().map(new EntityWritable(), itemPrefs, ctx); verify(ctx, itemPrefs); } @@ -215,19 +204,19 @@ public class ItemSimilarityTest extends public void testCosineSimilarityReducer() throws Exception { Reducer.Context ctx = createMock(Reducer.Context.class); - ctx.write(new ItemItemWritable(12l, 34l), new DoubleWritable(0.5d)); + ctx.write(new ItemItemWritable(12L, 34L), new DoubleWritable(0.5d)); replay(ctx); - new CosineSimilarityReducer().reduce(new ItemPairWritable(12l, 34l, 20d), - Arrays.asList(new FloatWritable(5f), new FloatWritable(5f)), ctx); + new CosineSimilarityReducer().reduce(new ItemPairWritable(12L, 34L, 20.0), + Arrays.asList(new FloatWritable(5.0f), new FloatWritable(5.0f)), ctx); verify(ctx); } public void testCompleteJob() throws Exception { - String tmpDirPath = System.getProperty("java.io.tmpdir")+"/"+ItemSimilarityTest.class.getCanonicalName(); + String tmpDirPath = System.getProperty("java.io.tmpdir")+ '/' +ItemSimilarityTest.class.getCanonicalName(); File tmpDir = new File(tmpDirPath); try { @@ -279,14 +268,14 @@ public class ItemSimilarityTest extends double similarity = Double.parseDouble(tokens[2]); if (currentLine == 1) { - assertEquals(1l, itemAID); - assertEquals(3l, itemBID); + assertEquals(1L, itemAID); + assertEquals(3L, itemBID); assertEquals(0.45, similarity, 0.01); } if (currentLine == 2) { - assertEquals(2l, itemAID); - assertEquals(3l, itemBID); + assertEquals(2L, itemAID); + assertEquals(3L, itemBID); assertEquals(0.89, similarity, 0.01); }