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/07/09 19:16:55 UTC
svn commit: r792612 -
/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/jdbc/AbstractJDBCDataModel.java
Author: srowen
Date: Thu Jul 9 17:16:54 2009
New Revision: 792612
URL: http://svn.apache.org/viewvc?rev=792612&view=rev
Log:
Added a little item-count caching
Modified:
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/jdbc/AbstractJDBCDataModel.java
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/jdbc/AbstractJDBCDataModel.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/jdbc/AbstractJDBCDataModel.java?rev=792612&r1=792611&r2=792612&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/jdbc/AbstractJDBCDataModel.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/jdbc/AbstractJDBCDataModel.java Thu Jul 9 17:16:54 2009
@@ -23,6 +23,8 @@
import org.apache.mahout.cf.taste.impl.common.IOUtils;
import org.apache.mahout.cf.taste.impl.common.IteratorIterable;
import org.apache.mahout.cf.taste.impl.common.SkippingIterator;
+import org.apache.mahout.cf.taste.impl.common.Cache;
+import org.apache.mahout.cf.taste.impl.common.Retriever;
import org.apache.mahout.cf.taste.impl.model.GenericItem;
import org.apache.mahout.cf.taste.impl.model.GenericPreference;
import org.apache.mahout.cf.taste.impl.model.GenericUser;
@@ -98,6 +100,7 @@
private final String getNumPreferenceForItemsSQL;
private int cachedNumUsers;
private int cachedNumItems;
+ private final Cache<Object,Integer> itemPrefCounts;
protected AbstractJDBCDataModel(DataSource dataSource,
String getUserSQL,
@@ -191,6 +194,8 @@
this.cachedNumUsers = -1;
this.cachedNumItems = -1;
+ this.itemPrefCounts = new Cache<Object,Integer>(new ItemPrefCountRetriever(getNumPreferenceForItemSQL));
+
}
private static void checkNotNullAndLog(String argName, Object value) {
@@ -426,7 +431,7 @@
throw new IllegalArgumentException("Illegal number of item IDs: " + length);
}
return length == 1 ?
- getNumThings("user preferring item", getNumPreferenceForItemSQL, itemIDs) :
+ itemPrefCounts.get(itemIDs[0]) :
getNumThings("user preferring items", getNumPreferenceForItemsSQL, itemIDs);
}
@@ -529,6 +534,7 @@
public void refresh(Collection<Refreshable> alreadyRefreshed) {
cachedNumUsers = -1;
cachedNumItems = -1;
+ itemPrefCounts.clear();
}
@@ -796,4 +802,16 @@
}
+ private class ItemPrefCountRetriever implements Retriever<Object,Integer> {
+ private final String getNumPreferenceForItemSQL;
+
+ private ItemPrefCountRetriever(String getNumPreferenceForItemSQL) {
+ this.getNumPreferenceForItemSQL = getNumPreferenceForItemSQL;
+ }
+
+ @Override
+ public Integer get(Object key) throws TasteException {
+ return getNumThings("user preferring item", getNumPreferenceForItemSQL, key);
+ }
+ }
}