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 2011/01/27 12:14:52 UTC

svn commit: r1064081 - in /mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/slopeone/jdbc: AbstractJDBCDiffStorage.java MySQLJDBCDiffStorage.java

Author: srowen
Date: Thu Jan 27 11:14:51 2011
New Revision: 1064081

URL: http://svn.apache.org/viewvc?rev=1064081&view=rev
Log:
Fix a few errors in getting diffs from JDBC

Modified:
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/slopeone/jdbc/AbstractJDBCDiffStorage.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/slopeone/jdbc/MySQLJDBCDiffStorage.java

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/slopeone/jdbc/AbstractJDBCDiffStorage.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/slopeone/jdbc/AbstractJDBCDiffStorage.java?rev=1064081&r1=1064080&r2=1064081&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/slopeone/jdbc/AbstractJDBCDiffStorage.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/slopeone/jdbc/AbstractJDBCDiffStorage.java Thu Jan 27 11:14:51 2011
@@ -144,6 +144,14 @@ public abstract class AbstractJDBCDiffSt
   
   @Override
   public RunningAverage getDiff(long itemID1, long itemID2) throws TasteException {
+
+    boolean flipped = itemID1 > itemID2;
+    if (flipped) {
+      long temp = itemID1;
+      itemID1 = itemID2;
+      itemID2 = temp;
+    }
+
     Connection conn = null;
     PreparedStatement stmt = null;
     ResultSet rs = null;
@@ -154,11 +162,17 @@ public abstract class AbstractJDBCDiffSt
       stmt.setFetchSize(getFetchSize());
       stmt.setLong(1, itemID1);
       stmt.setLong(2, itemID2);
-      stmt.setLong(3, itemID2);
-      stmt.setLong(4, itemID1);
       log.debug("Executing SQL query: {}", getDiffSQL);
       rs = stmt.executeQuery();
-      return rs.next() ? new FixedRunningAverageAndStdDev(rs.getDouble(2), rs.getDouble(3), rs.getInt(1)) : null;
+      if (rs.next()) {
+        double average = rs.getDouble(2);
+        if (flipped) {
+          average = -average;
+        }
+        return new FixedRunningAverageAndStdDev(average, rs.getDouble(3), rs.getInt(1));
+      } else {
+        return null;
+      }
     } catch (SQLException sqle) {
       log.warn("Exception while retrieving diff", sqle);
       throw new TasteException(sqle);

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/slopeone/jdbc/MySQLJDBCDiffStorage.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/slopeone/jdbc/MySQLJDBCDiffStorage.java?rev=1064081&r1=1064080&r2=1064081&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/slopeone/jdbc/MySQLJDBCDiffStorage.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/slopeone/jdbc/MySQLJDBCDiffStorage.java Thu Jan 27 11:14:51 2011
@@ -113,15 +113,18 @@ public final class MySQLJDBCDiffStorage 
     super(dataModel,
         // getDiffSQL
         "SELECT " + countColumn + ", " + avgColumn + ", " + stdevColumn + " FROM "
-            + diffsTable + " WHERE " + itemIDAColumn
-            + "=? AND " + itemIDBColumn + "=? UNION " + "SELECT " + countColumn + ", " + avgColumn + " FROM "
             + diffsTable + " WHERE " + itemIDAColumn + "=? AND " + itemIDBColumn + "=?",
         // getDiffsSQL
-        "SELECT " + countColumn + ", " + avgColumn + ", " + stdevColumn + ", " + itemIDAColumn 
+        "SELECT " + countColumn + ", " + avgColumn + ", " + stdevColumn + ", " + itemIDAColumn
             + " FROM " + diffsTable + ", "
             + dataModel.getPreferenceTable() + " WHERE " + itemIDBColumn + "=? AND " + itemIDAColumn + " = "
             + dataModel.getItemIDColumn() + " AND " + dataModel.getUserIDColumn() + "=? ORDER BY "
-            + itemIDAColumn,
+            + itemIDAColumn + " UNION "
+            + "SELECT " + countColumn + ", -" + avgColumn + ", " + stdevColumn + ", " + itemIDBColumn
+            + " FROM " + diffsTable + ", "
+            + dataModel.getPreferenceTable() + " WHERE " + itemIDAColumn + "=? AND " + itemIDBColumn + " = "
+            + dataModel.getItemIDColumn() + " AND " + dataModel.getUserIDColumn() + "=? ORDER BY "
+            + itemIDBColumn,
         // getAverageItemPrefSQL
         "SELECT COUNT(1), AVG(" + dataModel.getPreferenceColumn() + ") FROM "
             + dataModel.getPreferenceTable() + " WHERE " + dataModel.getItemIDColumn() + "=?",