Пользовательский алгоритм сопоставления Rails 3 с SQL-запросом (СЛОЖНО)
В настоящее время я работаю над приложением, которое сопоставляет пользователей на основе ответов на вопросы. Я реализовал свой алгоритм в обычных запросах RoR и ActiveRecord, но этос медленно, чтобы использовать его. Для сопоставления одного пользователя с 100 другими пользователями требуется
Completed 200 OK in 17741ms (Views: 106.1ms | ActiveRecord: 1078.6ms)
на моей локальной машине. Но все же ... Теперь я хочу реализовать это в сыром SQL, чтобы повысить производительность. Но я'У меня действительно возникают проблемы с тем, чтобы разобраться в SQL-запросах внутри SQL-запросов и тому подобном, плюс расчеты и т. д. Моя голова взорвется, и я неЯ даже не знаю, с чего начать.
Вот'Мой алгоритм:
def match(user)
@a_score = (self.actual_score(user).to_f / self.possible_score(user).to_f) * 100
@b_score = (user.actual_score(self).to_f / user.possible_score(self).to_f) * 100
if self.common_questions(user) == []
0.to_f
else
match = Math.sqrt(@a_score * @b_score) - (100 / self.common_questions(user).count)
if match