Ouch! I'm a stupid! Yes, I'm using Integers in MySQL (Long types in Java) for the Ids cause I thought it would be more performant. "Small" thing I forgot to mention before!!!!
That decision for the ids force me a small change in AbstractJDBCDataModel in the getUser method (removing String idString = id.toString() in line 226 and using the id in the buildUser at the bottom) and in AbstractJDBCDiffStorage where I change String nextResultItemID = rs.getString(3) with Comparable<?>nextResultItemID = rs.getString(3); instead of Comparable<?> nextResultItemID = (Comparable<?>) rs.getObject(3); !!!! When you mention the integers I found my error quickly. Now I fixed the cast problem and everything is working fine again! Sorry for the mistake and wasting your time Sean! :( Kind regards On Wed, Jul 29, 2009 at 7:47 PM, Sean Owen <[email protected]> wrote: > Interesting, that is a complicated bit of code. > > By any chance are you using ints as keys? that could suggest an > explanation. > > I don't suppose the data might be changing underneath you here? > > On Wed, Jul 29, 2009 at 9:56 PM, Nico Higgs<[email protected]> wrote: > > Hi Sean and everybody! > > > > I've download Mahout from SVN and followed the FAQ for trying Taste with > the > > 1M ratings from GroupLens dataset test. First I tried With the > > GroupLensRecommender(that uses a FileDataModel) and everythings went ok. > > > > Then I decide to give a try with the data loaded on MySQL with the > Slopone > > Recommender. After inserting the ratings.dat in taste_preferences table > > (1000029 rows), and the first run (3 hours and a half to generate the > > 4922072 rows for the slopeone diffs), I tried to get a recommend but a > I'm > > getting this error in > > the getDiffs method of AbstractJDBCDiffStorage (with the userID=1 and > > howMany=5) > > > > Caused by: java.lang.ArrayIndexOutOfBoundsException: 53 > > at > > > org.apache.mahout.cf.taste.impl.recommender.slopeone.jdbc.AbstractJDBCDiffStorage.getDiffs(AbstractJDBCDiffStorage.java:175) > > at > > > org.apache.mahout.cf.taste.impl.recommender.slopeone.SlopeOneRecommender.doEstimatePreference(SlopeOneRecommender.java:136) > > at > > > org.apache.mahout.cf.taste.impl.recommender.slopeone.SlopeOneRecommender.access$100(SlopeOneRecommender.java:50) > > at > > > org.apache.mahout.cf.taste.impl.recommender.slopeone.SlopeOneRecommender$Estimator.estimate(SlopeOneRecommender.java:219) > > at > > > org.apache.mahout.cf.taste.impl.recommender.slopeone.SlopeOneRecommender$Estimator.estimate(SlopeOneRecommender.java:209) > > > > > > Looking at the code it seems, that the set containg the results of the > > diffSQL contains distinct or more data than the preferences of the user. > Is > > this possible? > > > > Thanks and regards! > > > > PD: I'm currently starting with taste so I don't know If i could give any > > more help. Nevetherless I will continue to investigate further the > problem > > and tell you If I found something. > > >
