I have used FileDataModel, and there is no problem of recommendation items.
However, when I write the user-item-preference data into mongodb. And use
MongoDBDataModel for a recommender, no item will be recommended. And there
is no error. Just the size of recommended list is 0.
Here is how the data how been write to mongo DB:
BufferedReader bf = new BufferedReader(new FileReader("***.txt"));
String line="";
while((line= bf.readLine())!=null){
String[] values = line.split(",");
BasicDBObject doc = new BasicDBObject();
doc.put("user_id", Long.parseLong(values[0].trim()));
doc.put("item_id", Long.parseLong(values[1].trim()));
doc.put("preference",
Float.parseFloat(values[2].trim()));
col.insert(doc);
}
I checked the data in Mongodb, there is no problem of writing data in this
way.
Here is how MongoDBDataModel has been used in a recommender:
DataModel model = new
GenericBooleanPrefDataModel(GenericBooleanPrefDataModel.toDataMap
(new MongoDBDataModel("10.194.180.3", 27000,
"recommendation","userpref",true, true, null)));
RecommenderBuilder builder = new RecommenderBuilder(){
public Recommender buildRecommender(DataModel model) throws
TasteException{
UserSimilarity sim = new TanimotoCoefficientSimilarity
(model);
UserNeighborhood neighbor = new
NearestNUserNeighborhood(64, sim, model);
return new GenericBooleanPrefUserBasedRecommender(model,
neighbor, sim);
}
};
CachingRecommender recommender= new
CachingRecommender(builder.buildRecommender(model));
List<RecommendedItem> recItem = recommender.recommend(44708227, 10);
System.out.println(recItem.size()); *// here is size is alway 0*
for(RecommendedItem ri: recItem){
System.out.println(ri);
}
Any suggestions why this happens?
Thanks very much!!!
--
View this message in context:
http://lucene.472066.n3.nabble.com/no-item-recommended-by-using-MongoDBDataModel-tp3996841.html
Sent from the Mahout User List mailing list archive at Nabble.com.