You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mahout.apache.org by sr...@apache.org on 2010/02/12 16:38:06 UTC

svn commit: r909466 - /lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/cooccurence/UserItemRecommender.java

Author: srowen
Date: Fri Feb 12 15:38:06 2010
New Revision: 909466

URL: http://svn.apache.org/viewvc?rev=909466&view=rev
Log:
Per Robin use faster map here too

Modified:
    lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/cooccurence/UserItemRecommender.java

Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/cooccurence/UserItemRecommender.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/cooccurence/UserItemRecommender.java?rev=909466&r1=909465&r2=909466&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/cooccurence/UserItemRecommender.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/cooccurence/UserItemRecommender.java Fri Feb 12 15:38:06 2010
@@ -33,6 +33,7 @@
 import org.apache.hadoop.mapred.TextOutputFormat;
 import org.apache.hadoop.util.Tool;
 import org.apache.hadoop.util.ToolRunner;
+import org.apache.mahout.cf.taste.impl.common.FastByIDMap;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -46,6 +47,7 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.TreeSet;
 
 public final class UserItemRecommender extends Configured implements Tool {
@@ -73,15 +75,15 @@
     private int maxRecommendations;
 
     private final List<Integer> seenItems = new ArrayList<Integer>();
-    private final Map<Integer, Double> recommendations = new HashMap<Integer, Double>();
+    private final FastByIDMap<Double> recommendations = new FastByIDMap<Double>();
 
     private final Text user = new Text();
     private final Text recomScore = new Text();
 
-    private static class EntryValueComparator implements Comparator<Map.Entry<Integer, Double>>, Serializable {
+    private static class EntryValueComparator implements Comparator<Map.Entry<Long, Double>>, Serializable {
 
       @Override
-      public int compare(Map.Entry<Integer, Double> itemScore1, Map.Entry<Integer, Double> itemScore2) {
+      public int compare(Map.Entry<Long, Double> itemScore1, Map.Entry<Long, Double> itemScore2) {
         Double value1 = itemScore1.getValue();
         double val1 = (value1 == null) ? 0 : value1;
         Double value2 = itemScore2.getValue();
@@ -125,14 +127,14 @@
       outputSorted(userId, recommendations.entrySet(), output);
     }
 
-    public void outputSorted(int userId, Collection<Map.Entry<Integer, Double>> recomSet, OutputCollector<Text, Text> output)
+    public void outputSorted(int userId, Collection<Map.Entry<Long, Double>> recomSet, OutputCollector<Text, Text> output)
         throws IOException {
       user.set(String.valueOf(userId));
       int N = maxRecommendations;
-      Collection<Map.Entry<Integer, Double>> sortedRecoms =
-          new TreeSet<Map.Entry<Integer, Double>>(new EntryValueComparator());
+      Collection<Map.Entry<Long, Double>> sortedRecoms =
+          new TreeSet<Map.Entry<Long, Double>>(new EntryValueComparator());
       sortedRecoms.addAll(recomSet);
-      for (Map.Entry<Integer, Double> recommendation : sortedRecoms) {
+      for (Map.Entry<Long, Double> recommendation : sortedRecoms) {
         recomScore.set(recommendation.getKey() + fieldSeparator + recommendation.getValue());
         output.collect(user, recomScore);
         N--;