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 2009/06/19 13:09:37 UTC

svn commit: r786454 - in /lucene/mahout/trunk/core/src: main/java/org/apache/mahout/cf/taste/impl/model/file/FileDataModel.java test/java/org/apache/mahout/cf/taste/impl/model/file/FileDataModelTest.java

Author: srowen
Date: Fri Jun 19 11:09:36 2009
New Revision: 786454

URL: http://svn.apache.org/viewvc?rev=786454&view=rev
Log:
MAHOUT-135

Modified:
    lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/file/FileDataModel.java
    lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/model/file/FileDataModelTest.java

Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/file/FileDataModel.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/file/FileDataModel.java?rev=786454&r1=786453&r2=786454&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/file/FileDataModel.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/file/FileDataModel.java Fri Jun 19 11:09:36 2009
@@ -92,6 +92,7 @@
   private boolean loaded;
   private DataModel delegate;
   private final ReentrantLock reloadLock;
+  private final boolean transpose;
 
   /**
    * @param dataFile file containing preferences data. If file is compressed (and name ends in .gz
@@ -99,6 +100,10 @@
    * @throws FileNotFoundException if dataFile does not exist
    */
   public FileDataModel(File dataFile) throws FileNotFoundException {
+    this(dataFile, false);
+  }
+
+  public FileDataModel(File dataFile, boolean transpose) throws FileNotFoundException {
     if (dataFile == null) {
       throw new IllegalArgumentException("dataFile is null");
     }
@@ -113,6 +118,7 @@
     this.dataFile = dataFile.getAbsoluteFile();
     this.lastModified = dataFile.lastModified();
     this.reloadLock = new ReentrantLock();
+    this.transpose = transpose;
   }
 
   public File getDataFile() {
@@ -235,6 +241,11 @@
       itemID = line.substring(delimiterOne + 1);
       preferenceValueString = null;
     }
+    if (transpose){
+      String tmp = userID;
+      userID = itemID;
+      itemID = tmp;
+    }
     List<Preference> prefs = data.get(userID);
     if (prefs == null) {
       prefs = new ArrayList<Preference>(2);

Modified: lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/model/file/FileDataModelTest.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/model/file/FileDataModelTest.java?rev=786454&r1=786453&r2=786454&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/model/file/FileDataModelTest.java (original)
+++ lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/model/file/FileDataModelTest.java Fri Jun 19 11:09:36 2009
@@ -26,6 +26,7 @@
 import org.apache.mahout.cf.taste.model.DataModel;
 import org.apache.mahout.cf.taste.model.Item;
 import org.apache.mahout.cf.taste.model.Preference;
+import org.apache.mahout.cf.taste.model.User;
 import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood;
 import org.apache.mahout.cf.taste.recommender.Recommender;
 
@@ -57,6 +58,7 @@
           "D456,456,0.1"};
 
   private DataModel model;
+  private File testFile;
 
   @Override
   public void setUp() throws Exception {
@@ -72,7 +74,7 @@
         throw new IOException("Could not create temp directory");
       }
     }
-    File testFile = File.createTempFile("test", ".txt", tmpLoc);
+    testFile = File.createTempFile("test", ".txt", tmpLoc);
     testFile.deleteOnExit();
     PrintWriter writer =
         new PrintWriter(new OutputStreamWriter(new FileOutputStream(testFile), Charset.forName("UTF-8")));
@@ -98,6 +100,18 @@
     model.refresh(null);
   }
 
+
+  public void testTranspose() throws Exception {
+    FileDataModel tModel = new FileDataModel(testFile, true);
+    Item item = tModel.getItem("A123");
+    assertNotNull("item is null and it shouldn't be", item);
+    User user = tModel.getUser("456");
+    assertNotNull("user is null and it shouldn't be", user);
+    Preference [] pref = tModel.getPreferencesForItemAsArray("A123");
+    assertNotNull("pref is null and it shouldn't be", pref);
+    assertEquals("pref Size: " + pref.length + " is not: " + 3, 3, pref.length);
+  }
+
   public void testItem() throws Exception {
     assertEquals("456", model.getItem("456").getID());
   }