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() + "=?",