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/08/11 14:04:38 UTC
svn commit: r803081 [7/7] - in /lucene/mahout/trunk:
core/src/main/java/org/apache/mahout/cf/taste/eval/
core/src/main/java/org/apache/mahout/cf/taste/hadoop/
core/src/main/java/org/apache/mahout/cf/taste/impl/common/
core/src/main/java/org/apache/maho...
Modified: lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/grouplens/GroupLensRecommender.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/grouplens/GroupLensRecommender.java?rev=803081&r1=803080&r2=803081&view=diff
==============================================================================
--- lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/grouplens/GroupLensRecommender.java (original)
+++ lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/grouplens/GroupLensRecommender.java Tue Aug 11 12:04:35 2009
@@ -57,28 +57,28 @@
}
@Override
- public List<RecommendedItem> recommend(Comparable<?> userID, int howMany) throws TasteException {
+ public List<RecommendedItem> recommend(long userID, int howMany) throws TasteException {
return recommender.recommend(userID, howMany);
}
@Override
- public List<RecommendedItem> recommend(Comparable<?> userID, int howMany, Rescorer<Comparable<?>> rescorer)
+ public List<RecommendedItem> recommend(long userID, int howMany, Rescorer<Long> rescorer)
throws TasteException {
return recommender.recommend(userID, howMany, rescorer);
}
@Override
- public float estimatePreference(Comparable<?> userID, Comparable<?> itemID) throws TasteException {
+ public float estimatePreference(long userID, long itemID) throws TasteException {
return recommender.estimatePreference(userID, itemID);
}
@Override
- public void setPreference(Comparable<?> userID, Comparable<?> itemID, float value) throws TasteException {
+ public void setPreference(long userID, long itemID, float value) throws TasteException {
recommender.setPreference(userID, itemID, value);
}
@Override
- public void removePreference(Comparable<?> userID, Comparable<?> itemID) throws TasteException {
+ public void removePreference(long userID, long itemID) throws TasteException {
recommender.removePreference(userID, itemID);
}
Modified: lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/grouplens/GroupLensRecommenderEvaluatorRunner.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/grouplens/GroupLensRecommenderEvaluatorRunner.java?rev=803081&r1=803080&r2=803081&view=diff
==============================================================================
--- lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/grouplens/GroupLensRecommenderEvaluatorRunner.java (original)
+++ lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/grouplens/GroupLensRecommenderEvaluatorRunner.java Tue Aug 11 12:04:35 2009
@@ -40,9 +40,10 @@
public static void main(String... args) throws IOException, TasteException {
RecommenderEvaluator evaluator = new AverageAbsoluteDifferenceRecommenderEvaluator();
double evaluation = evaluator.evaluate(new GroupLensRecommenderBuilder(),
- new GroupLensDataModel(),
- 0.9,
- 0.1);
+ null,
+ new GroupLensDataModel(),
+ 0.9,
+ 0.1);
log.info(String.valueOf(evaluation));
}
Modified: lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/jester/JesterDataModel.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/jester/JesterDataModel.java?rev=803081&r1=803080&r2=803081&view=diff
==============================================================================
--- lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/jester/JesterDataModel.java (original)
+++ lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/jester/JesterDataModel.java Tue Aug 11 12:04:35 2009
@@ -20,6 +20,9 @@
import org.apache.mahout.cf.taste.example.grouplens.GroupLensDataModel;
import org.apache.mahout.cf.taste.impl.model.GenericPreference;
import org.apache.mahout.cf.taste.impl.model.file.FileDataModel;
+import org.apache.mahout.cf.taste.impl.common.FastByIDMap;
+import org.apache.mahout.cf.taste.impl.common.FileLineIterator;
+import org.apache.mahout.cf.taste.impl.common.FastIDSet;
import org.apache.mahout.cf.taste.model.Preference;
import java.io.File;
@@ -31,7 +34,7 @@
public final class JesterDataModel extends FileDataModel {
- private int userBeingRead;
+ private long userBeingRead;
public JesterDataModel() throws IOException {
this(GroupLensDataModel.readResourceToTempFile("/org/apache/mahout/cf/taste/example/jester/jester-data-1.csv"));
@@ -52,25 +55,19 @@
}
@Override
- protected void processLine(String line, Map<Comparable<?>, Collection<Preference>> data, char delimiter) {
- String userID = String.valueOf(userBeingRead);
+ protected void processLine(String line, FastByIDMap<Collection<Preference>> data, char delimiter) {
String[] jokePrefs = line.split(",");
- List<Preference> prefs = new ArrayList<Preference>(101);
- for (int itemIDNum = 1; itemIDNum < jokePrefs.length; itemIDNum++) { // yes skip first one, just a count
- String jokePref = jokePrefs[itemIDNum];
+ int count = Integer.parseInt(jokePrefs[0]);
+ List<Preference> prefs = new ArrayList<Preference>(count);
+ for (int itemID = 1; itemID < jokePrefs.length; itemID++) { // yes skip first one, just a count
+ String jokePref = jokePrefs[itemID];
if (!"99".equals(jokePref)) {
float jokePrefValue = Float.parseFloat(jokePref);
- String itemID = String.valueOf(itemIDNum);
- prefs.add(new GenericPreference(null, itemID, jokePrefValue));
+ prefs.add(new GenericPreference(userBeingRead, itemID, jokePrefValue));
}
}
- data.put(userID, prefs);
+ data.put(userBeingRead, prefs);
userBeingRead++;
}
- @Override
- public String toString() {
- return "JesterDataModel";
- }
-
}
\ No newline at end of file
Modified: lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/jester/JesterRecommender.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/jester/JesterRecommender.java?rev=803081&r1=803080&r2=803081&view=diff
==============================================================================
--- lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/jester/JesterRecommender.java (original)
+++ lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/jester/JesterRecommender.java Tue Aug 11 12:04:35 2009
@@ -42,28 +42,28 @@
}
@Override
- public List<RecommendedItem> recommend(Comparable<?> userID, int howMany) throws TasteException {
+ public List<RecommendedItem> recommend(long userID, int howMany) throws TasteException {
return recommender.recommend(userID, howMany);
}
@Override
- public List<RecommendedItem> recommend(Comparable<?> userID, int howMany, Rescorer<Comparable<?>> rescorer)
+ public List<RecommendedItem> recommend(long userID, int howMany, Rescorer<Long> rescorer)
throws TasteException {
return recommender.recommend(userID, howMany, rescorer);
}
@Override
- public float estimatePreference(Comparable<?> userID, Comparable<?> itemID) throws TasteException {
+ public float estimatePreference(long userID, long itemID) throws TasteException {
return recommender.estimatePreference(userID, itemID);
}
@Override
- public void setPreference(Comparable<?> userID, Comparable<?> itemID, float value) throws TasteException {
+ public void setPreference(long userID, long itemID, float value) throws TasteException {
recommender.setPreference(userID, itemID, value);
}
@Override
- public void removePreference(Comparable<?> userID, Comparable<?> itemID) throws TasteException {
+ public void removePreference(long userID, long itemID) throws TasteException {
recommender.removePreference(userID, itemID);
}
Modified: lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/jester/JesterRecommenderEvaluatorRunner.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/jester/JesterRecommenderEvaluatorRunner.java?rev=803081&r1=803080&r2=803081&view=diff
==============================================================================
--- lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/jester/JesterRecommenderEvaluatorRunner.java (original)
+++ lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/jester/JesterRecommenderEvaluatorRunner.java Tue Aug 11 12:04:35 2009
@@ -38,9 +38,10 @@
RecommenderEvaluator evaluator = new AverageAbsoluteDifferenceRecommenderEvaluator();
DataModel model = new JesterDataModel();
double evaluation = evaluator.evaluate(new JesterRecommenderBuilder(),
- model,
- 0.9,
- 1.0);
+ null,
+ model,
+ 0.9,
+ 1.0);
log.info(String.valueOf(evaluation));
}
Modified: lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/netflix/NetflixDataModel.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/netflix/NetflixDataModel.java?rev=803081&r1=803080&r2=803081&view=diff
==============================================================================
--- lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/netflix/NetflixDataModel.java (original)
+++ lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/netflix/NetflixDataModel.java Tue Aug 11 12:04:35 2009
@@ -19,9 +19,10 @@
import org.apache.mahout.cf.taste.common.Refreshable;
import org.apache.mahout.cf.taste.common.TasteException;
-import org.apache.mahout.cf.taste.impl.common.FastMap;
-import org.apache.mahout.cf.taste.impl.common.FastSet;
import org.apache.mahout.cf.taste.impl.common.FileLineIterable;
+import org.apache.mahout.cf.taste.impl.common.FastIDSet;
+import org.apache.mahout.cf.taste.impl.common.FastByIDMap;
+import org.apache.mahout.cf.taste.impl.common.LongPrimitiveIterator;
import org.apache.mahout.cf.taste.impl.model.GenericDataModel;
import org.apache.mahout.cf.taste.impl.model.GenericPreference;
import org.apache.mahout.cf.taste.model.DataModel;
@@ -37,8 +38,6 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
/**
* <p>This is a {@link DataModel} that reads the Netflix data set, as represented in its
@@ -71,83 +70,69 @@
log.info("Creating NetflixDataModel for directory: {}", dataDirectory);
log.info("Reading preference data...");
- Map<Comparable<?>, PreferenceArray> users = readUsers(dataDirectory);
+ FastByIDMap<PreferenceArray> users = readUsers(dataDirectory);
log.info("Creating delegate DataModel...");
delegate = new GenericDataModel(users);
}
- static List<Comparable<?>> readMovies(File dataDirectory) {
- List<Comparable<?>> movies = new ArrayList<Comparable<?>>(17770);
- for (String line : new FileLineIterable(new File(dataDirectory, "movie_titles.txt"), false)) {
- int firstComma = line.indexOf((int) ',');
- Integer id = Integer.valueOf(line.substring(0, firstComma));
- movies.add(id);
- if (id != movies.size()) {
- throw new IllegalStateException("A movie is missing from movie_titles.txt");
- }
- }
- return movies;
- }
-
- private Map<Comparable<?>, PreferenceArray> readUsers(File dataDirectory) throws IOException {
- Map<Comparable<?>, Collection<Preference>> userIDPrefMap = new FastMap<Comparable<?>, Collection<Preference>>();
+ private FastByIDMap<PreferenceArray> readUsers(File dataDirectory) throws IOException {
+ FastByIDMap<Collection<Preference>> userIDPrefMap = new FastByIDMap<Collection<Preference>>();
int counter = 0;
FilenameFilter filenameFilter = new MovieFilenameFilter();
for (File movieFile : new File(dataDirectory, "training_set").listFiles(filenameFilter)) {
Iterator<String> lineIterator = new FileLineIterable(movieFile, false).iterator();
String line = lineIterator.next();
- Integer movieID = Integer.valueOf(line.substring(0, line.length() - 1)); // strip colon
+ long movieID = Long.parseLong(line.substring(0, line.length() - 1)); // strip colon
while (lineIterator.hasNext()) {
line = lineIterator.next();
- counter++;
- if (counter % 100000 == 0) {
+ if (++counter % 100000 == 0) {
log.info("Processed {} prefs", counter);
}
int firstComma = line.indexOf((int) ',');
- Integer userID = Integer.valueOf(line.substring(0, firstComma));
+ long userID = Long.parseLong(line.substring(0, firstComma));
int secondComma = line.indexOf((int) ',', firstComma + 1);
float rating = Float.parseFloat(line.substring(firstComma + 1, secondComma));
Collection<Preference> userPrefs = userIDPrefMap.get(userID);
if (userPrefs == null) {
- userPrefs = new ArrayList<Preference>();
+ userPrefs = new ArrayList<Preference>(2);
userIDPrefMap.put(userID, userPrefs);
}
- userPrefs.add(new GenericPreference(null, movieID, rating));
+ userPrefs.add(new GenericPreference(userID, movieID, rating));
}
}
- return GenericDataModel.toPrefArrayValues(userIDPrefMap, true);
+ return GenericDataModel.toDataMap(userIDPrefMap, true);
}
@Override
- public Iterable<Comparable<?>> getUserIDs() throws TasteException {
+ public LongPrimitiveIterator getUserIDs() throws TasteException {
return delegate.getUserIDs();
}
@Override
- public PreferenceArray getPreferencesFromUser(Comparable<?> id) throws TasteException {
+ public PreferenceArray getPreferencesFromUser(long id) throws TasteException {
return delegate.getPreferencesFromUser(id);
}
@Override
- public FastSet<Comparable<?>> getItemIDsFromUser(Comparable<?> userID) throws TasteException {
+ public FastIDSet getItemIDsFromUser(long userID) throws TasteException {
return delegate.getItemIDsFromUser(userID);
}
@Override
- public Iterable<Comparable<?>> getItemIDs() throws TasteException {
+ public LongPrimitiveIterator getItemIDs() throws TasteException {
return delegate.getItemIDs();
}
@Override
- public PreferenceArray getPreferencesForItem(Comparable<?> itemID) throws TasteException {
+ public PreferenceArray getPreferencesForItem(long itemID) throws TasteException {
return delegate.getPreferencesForItem(itemID);
}
@Override
- public Float getPreferenceValue(Comparable<?> userID, Comparable<?> itemID) throws TasteException {
+ public Float getPreferenceValue(long userID, long itemID) throws TasteException {
return delegate.getPreferenceValue(userID, itemID);
}
@@ -162,17 +147,17 @@
}
@Override
- public int getNumUsersWithPreferenceFor(Comparable<?>... itemIDs) throws TasteException {
+ public int getNumUsersWithPreferenceFor(long... itemIDs) throws TasteException {
return delegate.getNumUsersWithPreferenceFor(itemIDs);
}
@Override
- public void setPreference(Comparable<?> userID, Comparable<?> itemID, float value) {
+ public void setPreference(long userID, long itemID, float value) {
throw new UnsupportedOperationException();
}
@Override
- public void removePreference(Comparable<?> userID, Comparable<?> itemID) {
+ public void removePreference(long userID, long itemID) {
throw new UnsupportedOperationException();
}
Modified: lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/netflix/NetflixFileDataModel.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/netflix/NetflixFileDataModel.java?rev=803081&r1=803080&r2=803081&view=diff
==============================================================================
--- lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/netflix/NetflixFileDataModel.java (original)
+++ lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/netflix/NetflixFileDataModel.java Tue Aug 11 12:04:35 2009
@@ -18,8 +18,9 @@
package org.apache.mahout.cf.taste.example.netflix;
import org.apache.mahout.cf.taste.common.Refreshable;
-import org.apache.mahout.cf.taste.impl.common.FastSet;
import org.apache.mahout.cf.taste.impl.common.FileLineIterable;
+import org.apache.mahout.cf.taste.impl.common.FastIDSet;
+import org.apache.mahout.cf.taste.impl.common.LongPrimitiveIterator;
import org.apache.mahout.cf.taste.impl.model.GenericItemPreferenceArray;
import org.apache.mahout.cf.taste.impl.model.GenericPreference;
import org.apache.mahout.cf.taste.model.DataModel;
@@ -32,11 +33,11 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
+import java.util.NoSuchElementException;
public final class NetflixFileDataModel implements DataModel {
private final File dataDirectory;
- private final List<Comparable<?>> movies;
public NetflixFileDataModel(File dataDirectory) throws IOException {
if (dataDirectory == null) {
@@ -45,38 +46,36 @@
if (!dataDirectory.exists() || !dataDirectory.isDirectory()) {
throw new FileNotFoundException(dataDirectory.toString());
}
-
this.dataDirectory = dataDirectory;
- movies = NetflixDataModel.readMovies(dataDirectory);
}
@Override
- public Iterable<Comparable<?>> getUserIDs() {
+ public LongPrimitiveIterator getUserIDs() {
throw new UnsupportedOperationException(); // TODO
}
@Override
- public PreferenceArray getPreferencesFromUser(Comparable<?> id) {
+ public PreferenceArray getPreferencesFromUser(long id) {
throw new UnsupportedOperationException(); // TODO
}
@Override
- public Iterable<Comparable<?>> getItemIDs() {
- return movies;
+ public LongPrimitiveIterator getItemIDs() {
+ return new MovieIDIterator();
}
@Override
- public FastSet<Comparable<?>> getItemIDsFromUser(Comparable<?> userID) {
+ public FastIDSet getItemIDsFromUser(long userID) {
throw new UnsupportedOperationException(); // TODO
}
@Override
- public Float getPreferenceValue(Comparable<?> userID, Comparable<?> itemID) {
+ public Float getPreferenceValue(long userID, long itemID) {
throw new UnsupportedOperationException(); // TODO
}
@Override
- public PreferenceArray getPreferencesForItem(Comparable<?> itemID) {
+ public PreferenceArray getPreferencesForItem(long itemID) {
StringBuilder itemIDPadded = new StringBuilder(5);
itemIDPadded.append(itemID);
while (itemIDPadded.length() < 5) {
@@ -96,7 +95,7 @@
@Override
public int getNumItems() {
- return movies.size();
+ return MovieIDIterator.COUNT;
}
@Override
@@ -105,7 +104,7 @@
}
@Override
- public int getNumUsersWithPreferenceFor(Comparable<?>... itemIDs) {
+ public int getNumUsersWithPreferenceFor(long... itemIDs) {
throw new UnsupportedOperationException(); // TODO
}
@@ -113,7 +112,7 @@
* @throws UnsupportedOperationException
*/
@Override
- public void setPreference(Comparable<?> userID, Comparable<?> itemID, float value) {
+ public void setPreference(long userID, long itemID, float value) {
throw new UnsupportedOperationException();
}
@@ -121,7 +120,7 @@
* @throws UnsupportedOperationException
*/
@Override
- public void removePreference(Comparable<?> userID, Comparable<?> itemID) {
+ public void removePreference(long userID, long itemID) {
throw new UnsupportedOperationException();
}
@@ -135,4 +134,42 @@
return "NetflixFileDataModel";
}
+ private static final class MovieIDIterator implements LongPrimitiveIterator {
+
+ private int next = 1;
+ static final int COUNT = 17770;
+
+ @Override
+ public long nextLong() {
+ if (next <= COUNT) {
+ return next++;
+ }
+ throw new NoSuchElementException();
+ }
+
+ @Override
+ public long peek() {
+ if (next <= COUNT) {
+ return next;
+ }
+ throw new NoSuchElementException();
+ }
+
+ @Override
+ public boolean hasNext() {
+ return next <= COUNT;
+ }
+
+ @Override
+ public Long next() {
+ return nextLong();
+ }
+
+ @Override
+ public void remove() {
+ throw new UnsupportedOperationException();
+ }
+
+ }
+
}
Modified: lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/netflix/NetflixRecommender.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/netflix/NetflixRecommender.java?rev=803081&r1=803080&r2=803081&view=diff
==============================================================================
--- lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/netflix/NetflixRecommender.java (original)
+++ lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/netflix/NetflixRecommender.java Tue Aug 11 12:04:35 2009
@@ -37,28 +37,28 @@
}
@Override
- public List<RecommendedItem> recommend(Comparable<?> userID, int howMany) throws TasteException {
+ public List<RecommendedItem> recommend(long userID, int howMany) throws TasteException {
return recommender.recommend(userID, howMany);
}
@Override
- public List<RecommendedItem> recommend(Comparable<?> userID, int howMany, Rescorer<Comparable<?>> rescorer)
+ public List<RecommendedItem> recommend(long userID, int howMany, Rescorer<Long> rescorer)
throws TasteException {
return recommender.recommend(userID, howMany, rescorer);
}
@Override
- public float estimatePreference(Comparable<?> userID, Comparable<?> itemID) throws TasteException {
+ public float estimatePreference(long userID, long itemID) throws TasteException {
return recommender.estimatePreference(userID, itemID);
}
@Override
- public void setPreference(Comparable<?> userID, Comparable<?> itemID, float value) throws TasteException {
+ public void setPreference(long userID, long itemID, float value) throws TasteException {
recommender.setPreference(userID, itemID, value);
}
@Override
- public void removePreference(Comparable<?> userID, Comparable<?> itemID) throws TasteException {
+ public void removePreference(long userID, long itemID) throws TasteException {
recommender.removePreference(userID, itemID);
}
Modified: lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/netflix/NetflixRecommenderEvaluatorRunner.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/netflix/NetflixRecommenderEvaluatorRunner.java?rev=803081&r1=803080&r2=803081&view=diff
==============================================================================
--- lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/netflix/NetflixRecommenderEvaluatorRunner.java (original)
+++ lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/netflix/NetflixRecommenderEvaluatorRunner.java Tue Aug 11 12:04:35 2009
@@ -38,7 +38,7 @@
public static void main(String... args) throws IOException, TasteException {
RecommenderEvaluator evaluator = new AverageAbsoluteDifferenceRecommenderEvaluator();
DataModel model = new NetflixDataModel(new File(args[0]), true);
- double evaluation = evaluator.evaluate(new NetflixRecommenderBuilder(), model, 0.9, 0.1);
+ double evaluation = evaluator.evaluate(new NetflixRecommenderBuilder(), null, model, 0.9, 0.1);
log.info(String.valueOf(evaluation));
}
Modified: lucene/mahout/trunk/taste-web/src/main/java/org/apache/mahout/cf/taste/web/RecommenderServlet.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/taste-web/src/main/java/org/apache/mahout/cf/taste/web/RecommenderServlet.java?rev=803081&r1=803080&r2=803081&view=diff
==============================================================================
--- lucene/mahout/trunk/taste-web/src/main/java/org/apache/mahout/cf/taste/web/RecommenderServlet.java (original)
+++ lucene/mahout/trunk/taste-web/src/main/java/org/apache/mahout/cf/taste/web/RecommenderServlet.java Tue Aug 11 12:04:35 2009
@@ -82,10 +82,11 @@
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException {
- String userID = request.getParameter("userID");
- if (userID == null) {
+ String userIDString = request.getParameter("userID");
+ if (userIDString == null) {
throw new ServletException("userID was not specified");
}
+ long userID = Long.parseLong(userIDString);
String howManyString = request.getParameter("howMany");
int howMany = howManyString == null ? DEFAULT_HOW_MANY : Integer.parseInt(howManyString);
boolean debug = Boolean.parseBoolean(request.getParameter("debug"));
@@ -146,7 +147,7 @@
}
private void writePlainText(HttpServletResponse response,
- String userID,
+ long userID,
boolean debug,
Iterable<RecommendedItem> items) throws IOException, TasteException {
response.setContentType("text/plain");
@@ -168,7 +169,7 @@
}
}
- private void writeDebugRecommendations(String userID, Iterable<RecommendedItem> items, PrintWriter writer)
+ private void writeDebugRecommendations(long userID, Iterable<RecommendedItem> items, PrintWriter writer)
throws TasteException {
DataModel dataModel = recommender.getDataModel();
writer.print("User:");