diff --git a/pom.xml b/pom.xml
index 8169ff7..b82bb07 100644
--- a/pom.xml
+++ b/pom.xml
@@ -12,6 +12,8 @@
UTF-8
+ 7
+ 7
diff --git a/src/test/java/nearsoft/academy/bigdata/recommendation/MovieRecommender.java b/src/test/java/nearsoft/academy/bigdata/recommendation/MovieRecommender.java
new file mode 100644
index 0000000..807ff10
--- /dev/null
+++ b/src/test/java/nearsoft/academy/bigdata/recommendation/MovieRecommender.java
@@ -0,0 +1,116 @@
+package nearsoft.academy.bigdata.recommendation;
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import org.apache.mahout.cf.taste.common.TasteException;
+import org.apache.mahout.cf.taste.impl.model.file.FileDataModel;
+import org.apache.mahout.cf.taste.impl.neighborhood.ThresholdUserNeighborhood;
+import org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender;
+import org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity;
+import org.apache.mahout.cf.taste.model.DataModel;
+import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood;
+import org.apache.mahout.cf.taste.recommender.RecommendedItem;
+import org.apache.mahout.cf.taste.recommender.UserBasedRecommender;
+import org.apache.mahout.cf.taste.similarity.UserSimilarity;
+
+
+public class MovieRecommender {
+
+
+ private int totalReviews = 0;
+ private int totalUsers = 0;
+ private int totalProducts = 0;
+
+ private int ProductNumb=0;
+ private int UserNumb=0;
+
+ private final HashMap usersHash = new HashMap();
+ private final HashMap productsHash = new HashMap();
+ private final HashMap InverseProductsHash = new HashMap();
+
+
+ // Constructor
+ public MovieRecommender(String path) throws IOException, TasteException {
+ File file = new File(path);
+ BufferedReader br = new BufferedReader(new FileReader(file));
+ File reviews = new File("RMovies.csv");
+ FileWriter fw = new FileWriter(reviews);
+ BufferedWriter wr = new BufferedWriter(fw);
+
+// Ocupamos le hashmap
+
+ String userId = "", productId = "", score;
+ String line;
+ while ((line = br.readLine()) != null) {
+ switch (line.split(" ")[0]) {
+ case "product/productId:":
+ productId = line.split(" ")[1];
+ if (!productsHash.containsKey(productId)) {
+ totalProducts++;
+ productsHash.put(productId, totalProducts);
+ InverseProductsHash.put(totalProducts, productId);
+ ProductNumb = totalProducts;
+ }
+ else{
+ ProductNumb = productsHash.get(productId);
+ }
+ break;
+ case "review/userId:":
+ userId = line.split(" ")[1];
+ if (!usersHash.containsKey(userId)) {
+ totalUsers++;
+ usersHash.put(userId,totalUsers);
+ UserNumb = totalUsers;
+ }
+ else{
+ UserNumb = usersHash.get(userId);
+ }
+ break;
+ case "review/score:":
+ score = line.split(" ")[1];
+ wr.write(UserNumb+","+ProductNumb+","+score+"\n");
+ totalReviews++;
+ break;
+ }
+ }
+ br.close();
+ wr.close();
+
+ }
+
+ public int getTotalReviews() {
+ return totalReviews;
+ }
+
+ public int getTotalProducts() {
+ return totalProducts;
+ }
+
+ public int getTotalUsers() {
+ return totalUsers;
+ }
+
+ public List getRecommendationsForUser(String userId) throws TasteException, IOException {
+ DataModel model = new FileDataModel(new File("RMovies.csv"));
+ UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
+ UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.1, similarity, model);
+ UserBasedRecommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);
+
+ List recommendations = recommender.recommend(usersHash.get(userId), 3);
+
+ List Response = new ArrayList ();
+
+ for (RecommendedItem recommendation : recommendations) {
+ Response.add(InverseProductsHash.get((int)recommendation.getItemID()));
+ }
+
+ return Response;
+ }
+
+}
\ No newline at end of file
diff --git a/src/test/java/nearsoft/academy/bigdata/recommendation/MovieRecommenderTest.java b/src/test/java/nearsoft/academy/bigdata/recommendation/MovieRecommenderTest.java
index 0d0b1fe..d9229f2 100644
--- a/src/test/java/nearsoft/academy/bigdata/recommendation/MovieRecommenderTest.java
+++ b/src/test/java/nearsoft/academy/bigdata/recommendation/MovieRecommenderTest.java
@@ -15,7 +15,7 @@ public class MovieRecommenderTest {
public void testDataInfo() throws IOException, TasteException {
//download movies.txt.gz from
// http://snap.stanford.edu/data/web-Movies.html
- MovieRecommender recommender = new MovieRecommender("/path/to/movies.txt.gz");
+ MovieRecommender recommender = new MovieRecommender("D:\\Emilio\\Documents\\Nearsoft\\Academy\\Code\\HwCode\\big-data-exercises-master\\movies.txt");
assertEquals(7911684, recommender.getTotalReviews());
assertEquals(253059, recommender.getTotalProducts());
assertEquals(889176, recommender.getTotalUsers());