Для студенческого совета в этом году я в комитете по «песням», мы выбираем песни.К сожалению, дети на танцах всегда заканчивают тем, что ненавидели некоторые глупые песни.Я думал, что смогу изменить ситуацию в этом году.В прошлый четверг я создал простое PHP-приложение, чтобы дети могли отправлять песни в базу данных, указав название песни, исполнителя и жанр (из раскрывающегося списка).Я также реализовал функцию голосования, похожую на Reddit.Нажмите кнопку upvote, вы проголосовали за песню, увеличили количество голосов.То же самое с отрицательными голосами.
В любом случае, в базе данных у меня есть три лакомых кусочка информации, которые, как я думал, я мог бы использовать для оценки этих песен, повышений, понижений и отметки времени.Какое-то время звание создавалось просто тем, что в верхней части были песни с наибольшим количеством голосов.То есть, чем больше голосов «за», тем меньше голосов «против» («против» - «против») будет в верхней части списка.Какое-то время это работало, но к воскресенью в списке было около 75 песен, и песни, которые были представлены первыми, были просто в начале списка.
В воскресенье я изменил алгоритм ранжирования на (upvotes - downvotes) / (CurrentTimestamp - CreationTimestamp), т. е. чем выше число голосов за меньшее время, тем выше будет песня в списке.Это работает, лучше, но все же не так, как мне бы хотелось.
Что происходит сейчас, так это то, что в момент, когда песня создается и ставится на голосование 1, она заканчивается в верхней частисписок где-то.Песни с отрицательным количеством голосов просматриваются не часто, потому что дети обычно не прокручивают до конца.
Я думаю, я мог бы отсортировать данные так, чтобы нижние песни отображались вверху, чтобы люди были вынужденычтобы увидеть нижние песни.Честно говоря, мне никогда раньше не приходилось работать над алгоритмом «популярности», так что вы думаете?
Веб-сайт по адресу http://www.songs.taphappysoftware.com - я не знаю, стоит ли ставить это здесьили нет, может вызвать некоторые нежелательные песни на танце: 0