diff --git a/app/repositories/orient_db/learning_object_repository.rb b/app/repositories/orient_db/learning_object_repository.rb
index a1c40c5aa69841fb03d66718942fd5b9d2c67a2b..718302ec11b2a69f336b0bf794e144a3d0af9c52 100644
--- a/app/repositories/orient_db/learning_object_repository.rb
+++ b/app/repositories/orient_db/learning_object_repository.rb
@@ -245,6 +245,20 @@ module OrientDb
       get_in_edges_count "Views", learning_object.id
     end
 
+    def max_likes
+      Rails.cache.fetch('max_likes', expires_in: 6.hours) do
+        max = connection.command 'SELECT max(in("Likes").size()) FROM LearningObject'
+        max["result"][0]["max"]
+      end
+    end
+
+    def max_views
+      Rails.cache.fetch('max_views', expires_in: 6.hours) do
+        max = connection.command 'SELECT max(in("Views").size()) FROM LearningObject'
+        max["result"][0]["max"]
+      end
+    end
+
     private
 
     def accepted_properties
diff --git a/app/workers/score_calculator_worker.rb b/app/workers/score_calculator_worker.rb
index c983bb87d3e633e4308bf5576f518d1d2d5f6754..7c12e742a7185b9991faec540087442a9dab051c 100644
--- a/app/workers/score_calculator_worker.rb
+++ b/app/workers/score_calculator_worker.rb
@@ -4,24 +4,25 @@ class ScoreCalculatorWorker
   include RepositoriesProxy
 
   def perform(rid)
+    weights = {"thumbnail": 40, "likes": 20, "views": 10, "description": 30}
 
     object = learning_object_repository.find(rid)
 
     score = 0
 
     # 40 points if it has thumbnail
-    score += 40 unless object.thumbnail.empty?
+    score += weights[:thumbnail] unless object.thumbnail.empty?
 
     # 1 point per like
     likes = learning_object_repository.count_likes(object)
-    score += (likes * 1) unless likes < 1
+    score += (likes / learning_object_repository.max_likes)*weights[:likes]  unless likes < 1
 
     # 1 point per view
     views = learning_object_repository.count_views(object)
-    score += (views * 1) unless views < 1
+    score += (views / learning_object_repository.max_views)*weights[:views] unless views < 1
 
     # 30 points if it has description
-    score += 30 unless object.decription.empty?
+    score += weights[:description] unless object.decription.empty?
 
     learning_object_repository.update_property(object, 'score', score)
   end