From e7a0f77f8b3eba2351df4645dba2ae10e24358d3 Mon Sep 17 00:00:00 2001 From: Mateus Rambo Strey <mars11@inf.ufpr.br> Date: Tue, 27 Oct 2015 10:09:22 -0200 Subject: [PATCH] add weights to learning objects score --- .../orient_db/learning_object_repository.rb | 14 ++++++++++++++ app/workers/score_calculator_worker.rb | 9 +++++---- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/app/repositories/orient_db/learning_object_repository.rb b/app/repositories/orient_db/learning_object_repository.rb index a1c40c5a..718302ec 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 c983bb87..7c12e742 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 -- GitLab