I am having issues refreshing my recommender, in particular with the
DataModel.
I am using a FileDataModel and a GenericItemBasedRecommender that also has
a CachingItemSimilarity wrapping a FileItemSimilarity. But for the test I
am running I am making things even simpler.
By the time I instantiate the recommender, these two files are in the
FileSystem:
data/datamodel.txt
0,1,0.0
data/datamodel.0.txt
0,2,1.0
And then I run the code you can find below:
-----------------------------------------------------------------------------------------------------------------------
FileDataModel dataModel = new FileDataModel(new File("data/dataModel.txt"
));
FileItemSimilarity itemSimilarity = new FileItemSimilarity(new File(
"data/similarities"));
GenericItemBasedRecommender itemRecommender =
newGenericItemBasedRecommender(dataModel, itemSimilarity);
System.out.println("Number of users in the system: " +
itemRecommender.getDataModel().getNumUsers()+" and " +
itemRecommender.getDataModel().getNumItems() + "items");
FileWriter writer = new FileWriter(new File("data/dataModel.1.txt"));
writer.write("1,2,1.0\r");
writer.close();
writer = new FileWriter(new File("data/dataModel.2.txt"));
writer.write("2,2,1.0\r");
writer.close();
writer = new FileWriter(new File("data/dataModel.3.txt"));
writer.write("3,2,1.0\r");
writer.close();
writer = new FileWriter(new File("data/dataModel.4.txt"));
writer.write("4,2,1.0\r");
writer.close();
writer = new FileWriter(new File("data/dataModel.5.txt"));
writer.write("5,2,1.0\r");
writer.close();
writer = new FileWriter(new File("data/dataModel.6.txt"));
writer.write("6,2,1.0\r");
writer.close();
itemRecommender.refresh(null);
System.out.println("Number of users in the system: " +
itemRecommender.getDataModel().getNumUsers()+" and " +
itemRecommender.getDataModel().getNumItems() + "items");
-----------------------------------------------------------------------------------------------------------------------
The output is the same in both println: Number of users in the system: 2
and 2items. So, only the information from the files that were on the system
by the time I run this test seem to get loaded on the DataModel.
What can be causing that? Is there a maximum number of updates a
FileDataModel can take up in every refresh?
Could it be that actually by the time I call itemRecommender.refresh(null)
the files have not been written to the FileSystem?
Should I be calling refresh in a different manner?
Thank you for your help.