Одобрение постов не количеством голосов но их силой!

У меня давно сидит в голове вопрос. Почему вывод на главную реализован по количеству проголосовавших, а не по некоему параметру, например, являющемуся суммой сил проголосовавших?

Ведь в данном случае неважно кто голосует — пяток бывалых пользователей с хорошей репутацией и сильным голосом или пять новичков даже с легким минусом в репутации — результат будет один при наборе количества голосов, указанных в конфиге, — топик попадет на главную!

Предлагаю реализовать систему вывода на главную, как например, это сделано на news2.ru — там имеет значение не только сила тех, кто голосует, но даже время голосования! Чем быстрее новость наберет необходимую «сумму сил», тем меньше потребуется голосов. Для низкопосещаемых ресурсов это не актуально, конечно. Но вот «сумма сил» вместо «количество любых голосов», на мой взгляд, пригодилась бы всем.

18 комментариев

avatar
Поддерживаю. Думаю, что голос новичка и голос бывалого, значительно отличаетстя друг от друга. При голосовании можно учитивать голос + силу этого голоса, например дополнительными очками.
Можно например найти силу равную одному голосу, к примеру 20.00
Для примера:
4 голоса за одну статью, + общая сила — 472.67
5 голосов за другую статью + общая сила — 446.76
Побеждает первая, так как голоса + сила преобладают над второй.
avatar
Имхо, количество голосов вообще не имеет значения, важна именно общая сила — т.н. вес голосов.
avatar
Получается некая самомодерация. Если ни один из старожил не проголосует за топик, вероятность выхода её на главную будет крайне низка. Но тут важно найти баланс. :) Вариант н2.ру мне лично нравится. И нравится то, что каждый может писать/голосовать, делать что угодно, в отличие от хабра и теперь вот ЛС…
avatar
Это реализовано во многих зарубежный проектах, параметры которые используются в них, это:
1. Рейтинг самого Автора, в первую очередь
2. Уровень рейтинга поста, который выставляет автор, другими словами человек пишет пост и в конце у него есть параметр от 1 до 10, если 10 то пост имеет максимальную силу, а если 1 то минимальную.
3. приеду допишу, я просто системой это давно интересовался… сорьки надо на работу.
avatar
Полностью вас поддерживаю!
avatar
если внимательно посмотреть модуль Rating, а точнее метод VoteTopic, то можно увидеть похожий механизм. Например, при силе больше 100 пользователь голосует за топики по 2 балла и т.д.
Настройте как вам нужно и пользуйтесь.
avatar
Стало быть все решение только в том, чтобы вынести переменную. И будет людям счастье :-)
avatar
$iDeltaRating=$iValue;
                if ($skill>=100 and $skill<250) {
                        $iDeltaRating=$iValue*2;
                } elseif ($skill>=250 and $skill<400) {
                        $iDeltaRating=$iValue*3;
                } elseif ($skill>=400) {
                        $iDeltaRating=$iValue*4;
                }


Которую из них? =)
avatar
а в каком файле?
А то прям в ЛС столько секретов недокументированных! Подскажите я поправлю ;)
avatar
\classes\modules\rating\Rating.class.php

А что вы там править собрались? Единственное, что пришло пока на ум — вычислить некую переменную на основании максимальной силы и общего силы (сумма сил всех юзеров), и уже от этой переменной плясать. Разумеется, она будет плавающая. =) Короче, надо подумать…
avatar
Ммм… ну я имел ввиду переменную которая может быть порогом для добавления еще одного голоса.
Что-то вроде того:

$iDeltaRating=$iValue;
if($skill > VOTE_RANGE_TOPIC) {
    $iDeltaRating = floor($skill / VOTE_RANGE_TOPIC);
}


В результате за каждые, скажем, 100 баллов силы мы получим еще один голос.
avatar
А VOTE_RANGE_TOPIC вынести в конфиг
avatar
Можно использовать как вариант. А почему 100, а не 10 или не 1000? ;)
avatar
Просто первую цифру взял из предложенного куска кода. В том и суть выноса настройки, чтобы каждый мог задать сколько угодно.
avatar
Вот так точнее будет:

$iDeltaRating=$iValue;
if($skill > VOTE_RANGE_TOPIC) {
    $iDeltaRating = $iValue * floor($skill / VOTE_RANGE_TOPIC);
}
avatar
Правда у меня есть ощущение, что предложенный кусок кода больше смахивает на голосование за рейтинг пользователя, а не топики ;-)
avatar
взято из самого начала функции VoteTopic() :)
avatar
Никто не занимался вопросом, пока меня не было? :)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.