Лучшая практика для расчета пользовательского рейтинга и многое другое - PullRequest
0 голосов
/ 11 февраля 2012

Я создаю приложение, которое разделяет некоторые вещи ...

Каждый объект может быть оценен, имеет рейтинг 1..5 начала.Я сохраняю для каждого числа ставок на одну звезду, чтобы можно было рассчитать среднюю скорость.

Итак, на каждый Obj у меня есть: средняя скорость и общая скорость.Мне нужно получить Obj с рейтингом 10 лучших - так можно сделать это, используя AvgRate + TotalRate (те, у кого эти значения как top10).

Я хочу иметь на сервере таблицу sql, такую ​​как: ObjId (index), totalRate, AvgRate ... Если возможно, чтобы эта таблица была отсортирована так, чтобы получить топ-10 в качестве первых 10?Как запросить топ-10 с нужным мне расчетом?

Также - мне нужно получить топ-10 для пользователей.Таким образом, для каждого пользователя у меня есть весь объект, которым он поделился, поэтому он может иметь все показатели этого объекта - со всей информацией на объект, как упомянуто ранее.

Мне нужно знать, как рассчитать коэффициент пользователя, а также -как быстро получить топ10.

есть идеи?

1 Ответ

2 голосов
/ 11 февраля 2012

Позже Редактировать: Извините, не понял ваш вопрос при написании этого ответа, оставлю его для других ..


Какая у вас формула для TotalRate? И что вы подразумеваете под «так можно сделать это с помощью AvgRate + TotalRate» Почему вы суммируете среднее значение для TotalRate - что бы это ни было?

Рекомендуется всегда вычислять суммы / средние значения постепенно. Я бы смоделировал Obj так:

  • Общее количество полученных ставок
  • B общая сумма полученных баллов
  • C средняя (с плавающей точкой: B / A)
  • D - внешний ключ для пользователя (автора / владельца Obj)

Когда объект получает скорость X, вы затем пересчитываете A = A + 1, B = B + X, C = B / A. Таким же образом предварительно рассчитать совокупные суммы / среднее. Поэтому, если Obj принадлежит пользователю, создайте те же поля (A, B, C) для модели / таблицы пользователя, а когда Obj получает скорость X, также обновите значения A, B, C для пользователя D (владельца Obj). Затем, при выборе топ-10 пользователей, вам не нужно объединяться с таблицей Obj (которая может стать огромной), вы выбираете только пользователей - по убыванию по столбцу B или C, предел 10.

...