Покинул форум
Сообщений всего: 86
Дата рег-ции: Окт. 2008
Помог: 1 раз(а)
[+]
Необходимо выводить в топ самые популярные книжки. Выводится по 2-м критериям 1. оценка 2. кол-во скачиваний.
Думаю, что есть какая-то типа "экспоненциальной" формула которая как правило применяется в таких случаях, может кто подскажет ее?
EuGen
Отправлено: 07 Апреля, 2009 - 12:23:28
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
ORDER BY
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Stierus
Отправлено: 07 Апреля, 2009 - 12:25:35
Рекордсмен по количеству сообщений за 7 дней
Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008 Откуда: Москваль
Помог: 52 раз(а)
Ну так вы и решайте, что для вас важнее это исключительно логика вашего приложения, спрашивать подобную формулу - всёравно, что спрашивать, какой вам логин или пароль выбрать для админского аккаунта . Если вам пофиг всё - можете тупо сумму искать, если важнее кол-во скачиваний - домножайте скачивания на 2 и прибавляйте оценку и тд. Что вам нужно и в каком соотношении - известно только вам (Добавление)
не, евген, у него ордер по двум полям, оба нужны - вот он и мается, какой выбрать более важным ... или не выбрать, а по обоим сразу
Покинул форум
Сообщений всего: 134
Дата рег-ции: Окт. 2008
Помог: 0 раз(а)
Ну, я так понял, оценка может варьироваться в каких-то пределах, скажем от 1 до 10. А у скачиваний верхней планки нету (от 0 до x). То есть, может быть такая картина:
- книга №1, оценка 3, скачиваний 23.
- книга №3, оценка 8, скачиваний 69.
- книга №2, оценка 1, скачиваний 2.
- книга №5, оценка 10, скачиваний 145.
- книга №4, оценка 5, скачиваний 37.
По логике, та книга у которой оценка выше, та и будет более скачиваемой чем та, у которой оценка ниже. Но у книг могут быть равные оценки, или максимальные оценку (дальше двигаться некуда), тогда лучшую из них надо сравнивать по количеству скачиваний. Я так думаю. По этому, наверно нужно выводить на первые места книги у которых больше всего скачиваний. Ну на крайняк, можно оценку умноженную на какое-нибудь стационарное число (скажем 10) складывать с количеством скачиваний и по этому числу вести конкуренцию. И какую-то замысловатую формулу тут сложно придумать.
Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008 Откуда: Москваль
Помог: 52 раз(а)
тогда тебе и формулы не нужны :
ODER BY `оценка` DESC, `скачиваний` DESC
Antonim
Отправлено: 07 Апреля, 2009 - 18:09:21
Гость
Покинул форум
Сообщений всего: 86
Дата рег-ции: Окт. 2008
Помог: 1 раз(а)
[+]
гм, не так все просто. важную роль играет в рейтинге и максимальное число голосов за одну книгу.. эта цифра тоже должна фигурировать в экспоненциальной формуле по которой долен формироваться топ. Почему экспоненциальныя - потому, что чем больше человек головало, тем меньше влияет количество голосов и теб больше среднее значение оценок и наоборот если пару чел проголосовало за одну книгу и поставили ей "5", а 100 других оченили другую на "3", то та, что на 3 должна быть выше, в то же время понятно что если 10 человек оценили на 5, а 20 другую на 3, то та ято на 5 будет выше....
И ЗАВИСИМОСТЬ ТУТ НЕ ЛИНЕЙНАЯ!
Я думал, что есть уже выработанная форума, а не типа (2+2)*2/5 ))
Покинул форум
Сообщений всего: 134
Дата рег-ции: Окт. 2008
Помог: 0 раз(а)
Ну вы для начала задачу доходчиво изложите. Из чего и как складывается оценка и т.д. Исходные действия какие?..
Гость
Отправлено: 07 Апреля, 2009 - 21:05:20
УДАЛЁН
zeit Господин Antonim хочет хочет сказать что здесь линейная сортировка не годиться - то есть НЕЛЬЗЯ сортировать сначала по одному а потом по другом признаку а надо учитывать их вместе
Лично мне кажется что будет достаточно f(x)=d(x)+k*q(x) где d(x) скачиваемость книги q(x) рейтинг книги а f(x) - общий рейтинг книги а значит и ее позиция в выаоде
В данном случае k можно определеить как ln(d(x))/ln(q(x)) и получим средне выровненое арспределение
А вообще надо бы открыть книжку по матстату и посомтреть там
EuGen
Отправлено: 08 Апреля, 2009 - 10:22:55
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Так это же не случайный процесс, а вполне конкретные данные. А формулу какую-либо сносную придумать можно легко. Главное понять, в какой степени и что важно.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Stierus
Отправлено: 08 Апреля, 2009 - 10:54:42
Рекордсмен по количеству сообщений за 7 дней
Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008 Откуда: Москваль
Помог: 52 раз(а)
Вобщем средние, максимальные значения вам в помощь. Кстати совет дам : если вычисления сложные будут - вам лучше ввести дополнительный столбец в базе данных со значением этого ORDER, которое будет вычисляться при каждом изменении
Champion
Отправлено: 09 Апреля, 2009 - 10:11:38
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
ORDER BY (k*downloads + k2*rating)/(downloads + rating) DESC, гдеk и k2 коэффициенты важности критерия. Подбираются опытным путем. Деление для того, чтоб новая книжка, которую скачивать начали недавно и еще не накачали, но хорошо оценивают не терялась где-то внизу.
А моджет быть лучше, чтоб пользователь сам выбирал, что ему надо - по оценке или по скачиваниям?
Antonim
Отправлено: 16 Апреля, 2009 - 17:58:11
Гость
Покинул форум
Сообщений всего: 86
Дата рег-ции: Окт. 2008
Помог: 1 раз(а)
[+]
в этой формуле должно быть учтено максимальное кол-во голосов за одну книгу.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.