Windows. Железо. Интернет. Безопасность. Операционные системы. Советы

Как сделать систему рейтинга. Новая система рейтинга: что изменилось? Что же не так с двумя кнопками

Как сделать рейтинг или систему оценок?

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

Дано : нужно оставить свой негативный или позитивный отзыв о чём-либо. Допустим, о .

Стандартные решения : дать людям пять звёздочек или две кнопки с плюсом-минусом и рейтингом между ними.

О ба решения - ерунда.

Н ам известно, что обилие вариантов уменьшает вероятность выбора одного из них (). Это значит, что сделав 10 звёздочек вместо 5 вы значительно уменьшите количество голосов, а сделав 20 звёздочек... (поэтому хорошие дизайнеры борятся за каждый пункт в главном меню).

Н о ведь результат будет более точен, можете сказать вы. И будете правы. Правда, пользоваться рейтингом будут 10 человек вместо 1000, мало у кого 10 (20) градаций классности чего-либо. Значит выборка будет не репрезентативна и её можно выбросить.

П отому две кнопки выигрывают у звёздочек, они проще.

Что же не так с двумя кнопками?

М ы не видим соотношения недовольных людей к довольным. Допустим, у рейтинг 100 попугаев. Она настолько плоха, что из 300 проголосовавших 100 были ей недовольны (33%, на секунду)? Или же она настолько прекрасна, что 100 пользователей посчитали её отличной и всем понравилось? Непонятно, будем показывать пропорцию.

Н о и тут не слава богу - ведь если за программу положительно проголовало 10 человек и 1 отрицательно (11 голосов), то в гипотетическом рейтинге классности она будет выше, чем программа, у которой соотношение 1000:101, а это абсурд - популярность второй программы должна уделать первую. К тому же здесь притаилась неплохая возможность накрутить рейтинг (правда, владельцы приложений для ?).

М ожно поступить просто:

Н о лучше пораскинуть мозгами: как избежать накрутки? Введём нижний порог участия в рейтинге. Значит, программа с 11 голосами не сможет быть выше программы с 1101 голосом. Старожилы будут счастливы, а новички будут медленно двигаться в сторону кладбища, никакой мотивации.

Д авайте учитывать конверсию. Сколько людей из скачавших не поленилось оставить свой отзыв?

С качали 1000, оставили 110? Молодцы!

С качали 100, оставили 1? Неплохо, но первая лучше.

У верен, вместе с небольшим (!) минимальным порогом голосов такое решение будет работать лучше, чем синтетический рейтинг или сортировка по соотношению голосов. Даже если кто-то накрутит рейтинг вначале - с каждым новым скачиванием плохая программа будет падать всё ниже и ниже, освобождая дорогу хорошим. А ведь нам это и нужно.

Д авайте обсудим.

Комментарии:

  • Антон
    Думаю можно перенять кое что у того же booking.com
    Голосование только тех кто купил и с указанием + и - программы.
    И думаю надо как то учитывать дату релиза.
    Возможно рейтинг должен быть для версии.
    Интересен математический апарата, который позволит корректно разрешить проблему старого/нового приложения.
  • Ярослав Бирзул
    Про дату и ограничение на скачавших согласен, а вот про указание плюсов и минусов программы нет. Люди пишут это в описании к оценке, а вот дополнительные параметры ведут к новым звёздочкам, что плохо.
  • Антон
    Ну … если взять пример букинга, то это не только не мешает, но часто и работает лучше чем звёздочки само по себе. Фраза «отсутствуют розетки в дорме» в - и «ночью на кухню выносят шоколадные кексики и имбирный лимонад» в + может помочь сделать выбор намного лучше числа в рейтинги.
  • Ярослав Бирзул
    Согласен, но ничего не мешает описать это в комментарии к оценке, зачем плодить?
  • Антон
    гм, это вместо оного и есть.
    ключевое - явное разделение + и - .
    кроме того сразу понятно что там писать в отличии от несколько абстрактных комментариев.
  • mogilka
    Всегда испытываю негодование при виде звёздочек, и если иначе свою оценку не оставить, пытаюсь выбрать приемлемое, заранее взвесив за и против. И я уверена, полученная оценка всегда будет отражать примерное отношение. Так что, думаю, эти звёздочки вводят в заблуждение и юзера и аналитика.
    + и - мне тоже не нравится, хотя иногда в этом есть смысл. Но на активном ресурсе есть большая вероятность, что минусами будут злоупотреблять, уже не раз такое подтверждалось.
    Идеальным вариантом для высказывания своего мнения считаю лайки, принятые (или плюсы, не суть важно). Человек, который хочет поддержать, всегда нажмёт плюс
  • Ярослав Бирзул
    Лайки имеют одну неприятность - они выражают лишь количество людей, которым понравилось что-либо и не отображают отношения сообщества, не позволяют устроить модерацию с помощью других участников.
    Вторая большая проблема такой однобокости (поняли ещё на InspireMe) - не получится правильно ранжировать материалы, которые появились в разное время. Старый всегда будет иметь фору, что не очень хорошо.
    Формат, в котором есть оба мнения, но учитывается ещё и эффективность (относительно скачиваний, просмотров и т.п.) будет лишён этих недостатков.
    Думаю, в будущих проектах мы будем работать именно в таком ключе.
  • talgautb
    согласен, тема интересная тоже задумывался над этим.
    насчёт вывода в топ, думаю так:
    количество +/- за время публикации
    тут наверн как на кинопоиске необходима сложная математическая формула:)
    ещё важно не показывать результат голоса (если например статья), часто бывает, что пользователь кликает от общего отношения пользователей.
    думаю, тут от проекта зависит.
    но в общем-то мне больше нравится + или -
    если понравилось +, нет - , если пофиг ничего:)
    а звёздочки для оценки гостиниц, ресторанов самое то
    имхо
  • multik
    Ярослав, подумал над вашей задачей 10 минут, поэтому строго не судите, но можете рассмотреть как идею:
    Обозначаем переменные
    amount - общее кол-во людей, которое ознакомилось . Тут стоит обратить особое внимание, что это не просто кол-во людей, которое зашло на страницу. Это именно люди, ознакомившиеся с контентом. Как их посчитать? Если у нас видео выступает в качестве контента, то пускай хотя бы 25% от общей продолжительности видеоролика просмотрит и тогда мы юзера добавляем к переменной amount. Если у нас набор , то пускай пользователь хотя бы 10 секунд их рассматривал, пользовался скроллом (через скроллбар или мышкой/тачскрином), вообщем, мониторим прочее поведение, свойственное для реального человека. Задача зафиксировать реального(!) пользователя, который действительно ознакомился(!) с контентом, только тогда мы его добавляем к amount и запоминаем его id, чтобы в будущем исключить его повторного добавления к переменной amount для конкретной статьи, если там он уже есть.
    Итого получаем формулу:
    delta = amount + (плюсы - минусы);
    можно усилить влияние плюсов и минусов, умножив скобки на 2:
    delta = amount + (плюсы - минусы) * 2;
    Пример (базовая формула):
    контент изучили 1000 человек, поставили 10 плюсов и 90 минусов.
    delta = 1000 + (10 - 90) = 1000 + -80 = 920;
    контент изучили 100 человек, поставили 80 плюсов и 2 минуса
    delta = 100 + (80 - 2) = 100 + 78 = 178;
    В чём особенность:
    статья с amount=1000, с 10 плюсами и 20 минусами будет ниже по рейтингу статьи, с amount=600, у которой 401 плюсов и 10 минусов, т.к. в первом случае delta=990, а во втором 991.
    если же использовать для вышеприведённого примера формулы с усилением на плюсы/минусы, то получим, что чтобы обойти статью с amount=1000, 10 плюсами и 20 минусами, достаточно статьи с amount=401, с 292 плюсами и 2 минусами. В первом случае delta=980, во втором 981. Если говорить простыми словами, то статья, с которой ознакомилось только 401 человек и поставила кучу плюсов, обгонит статью с 1000 ознакомившихся.
    Усиление плюсов и минусов можно увеличить, поставив в формулу вместо двойки, скажем 5 или даже 10.
    В чём минус схемы: идея придумана 30 минут назад, в жизни не пробовалась, возможно что-то где-то упустил из виду.
    Ну и не забываем писать кучу скриптов защиты от накрутов. В формуле уже заложена основа, но этого мало. Нужно также позаботиться о защите от накрутки ботами и прочим шаманством.
  • Ранговые игры становятся доступны после 150 игр.
  • Все игроки в группе должны иметь доступ к ранговым играм.
  • Доступны All Pick, Captains Mode и Captains Draft режимы.
  • Ranked matchmaking is unlocked after approximately 150 games.
  • Вы не можете играть ранговые игры находясь в низком приоритете (low priority pool).
  • Тренеры (Coaches) не доступны.
  • Игры играемые в обчном режиме не влияют на ранговый рейтинг (MMR).
  • Ваш ранговый рейтинг доступен только для вас и ваших друзей.
  • Прежде чем сыграть рейтинговую игру вам необходимо сыграть 10 калибровочных игр для определения вашего рейтинга.

Ваш ранговый рейтинг (MMR)

Dota 2 использует следующую технику для подбора игроков. Игра присваивает каждому игроку рейтинг, который отражает ваш уровень игры. После каждого матча рейтинг обновляется, базируясь на ваших результатах. Вобщем, при выигрышах он увеличивается, при поражениях понижается. Победа/поражение основной критерий для определения рейтинга, однако личные показатели тоже влияют на итоговый результат, особенно в случаях высокой неопределенности вашего рейтинга.

Неопределенность также фиксируется игрой. Новые учетные записи, а также новички в рейтинговых играх имеют высокую неопределенность. Чем больше неопределенность, тем больше рейтинговых очков вы получаете либо теряете. Если результат матча сходится с текущими ожиданиями, неопределенность снижается. До тех пор пока не пропадет совсем. Неожиданный результат матча увеличивает неопределенность.

Игра рассчитывает 4 показателя MMR для каждого игрока:

  • Обычные игры, в одиночку.
  • Обычные игры, в группе.
  • Рейтинговые игры, в одиночку.
  • Рейтинговые игры, в группе.

5% 1100 10% 1500 25% 2000 50% 2250 75% 2731 90% 3200 95% 3900 99% 4100

Как подбибирается игрок

Основная цель подбора игроков - наслаждение от игры. Подбор придерживается следующих параметров:

  1. Команды должны быть сбалансированы (Каждая команда имеет 50-процентный шанс на победу.)
  2. Несоответствие в уровне игроков между самым высоким и самым низким должно быть минимальным.
  3. Несоответствие в опыте игроков (количество сыгранных игр) между самым высоким и самым низким должно быть минимальным.
  4. Самый сильный игрок из одной команды должен быть равен по уровню игроку из противоположной команды.
  5. Команды должны содержать равное число групп игроков, т.е. группа из 5-ти игроков не должна попадаться против группы из 5-ти отдельных игроков.
  6. Игроки должны разговаривать на общем языке. Особенно игроки одной команды.
  7. Время ожидания не должно быть слишком большим.

Выбор редко соответствует всем правилам идеально. Каждому потенциальному выбору игра присваивает оценку по каждому параметру, а затем рассчитывает среднее. Когда средняя оценка превышает определенный порог, этот выбор считается подходящим.

Выбор игроков напрямую не зависит от количества побед/поражений. Тем не менее игра старается подобрать игроков так, что у каждой команды есть 50-процентный шанс на победу. Это первый критерий выбора. Игра не оценивает индивидуальный процент побед. Но когда вы имеете серию из побед ваш рейтинг увеличивается, и велика вероятность, что вам попадутся сильные соперники.

Процент побед не оценивает уровень игрока. Поэтому при подборе игроков он не имеет значительной роли. Игра старается подобрать игроков по количеству опыта, во многом потому, что, как оказывается, игроки одного уровня, но с разным количеством опыта, имеют разные представления о том, как нужно играть. Разница между 40-ми и 120-ю сыгранными играми приблизительно такая же как между 120-ю и 280-ю.

Вы можете оценить влияние параметров #2 и #3 на графике, горизонтальная ось - это количество сыгранных игр, а вертикальная - рейтинг MMR. Если игроки близко к друг другу на диаграмме, они считаются подходящим выбором. Игроки отстоящие далеко друг от друга считаются неприемлемым выбором. Типичная траектория нового игрока обозначена красным цветом, он набирает рейтинг по мере увеличения уровня. Игрок уже имевший опыт игры обозначен желтым цветом, как видите, он изначально набирает рейтинг быстрее, однако траектория выравнивается с количеством игр.

Группы игроков

Когда ироки играют группами, расчет происходит по другому. Группы часто содержат игроков с большим разбросом опыта и уровней. Поэтому чтобы подбор соответствовал критериям выше, группам присваивается суммарный рейтинг. И побор происходит по этому рейтингу. Вобщем, когда группа сравнивается по рейтингу с отдельным игроком, ее суммарный рейтинг должен быть равен рейтингу отдельного игрока. Если вы видите что игрок сильно уступает по уровню другим игрокам, велика вероятность того, что он в группе с сильным игроком.

Также когда игроки в группе они зачастую имею лучшие результаты чем игроки того жу уровня, но играющие порознь. Игра компенсирует это 2мя способами. Первый, игра рассчитывает ваш уровень по-разному, когда вы играете один и в группе. Второй, перерасчет рейтинга, учитывая количество игроков в группе и разброс опыта в группе.

Пример подбора игроков в матче.


RADIANT DIRE Группа MMR MMR(пересч.) Группа MMR MMR(пересч) D 2994 3003 C 3046 3062 F 2788 2788 C 2920 2936 A 2687 2687 E 2716 2716 F 2626 2627 B 2672 2672 D 2401 2410 C 2100 2116 Общее 13515 TOTAL 13502

Как видите средний пересчитанный MMR для обоих групп около 2700. Когда игроки в команде отсортированы по пересчитанному рейтингу, как в таблице, игроки играющие в одиночку обычно попадают в середину распределения, к тому же группа с меньшим распределением (F) попадает в группу в большим распределением (D). Эти правила часто повторяются. Также группа D получила болщий пересчитанный рейтинг, чем группа F, из-за большего разброса рейтинга MMR. Эти расчеты были сделаны с помощью статистических программ, однако простое объяснение таково - ваши результаты лучше, когда вы в группе с сильными игроками, нежели когда в группе с игроками своего уровня.

Статистика

Оценить результат подбор довольно сложно. Оценка подбора игроками сильно зависит от исхода матча. Поэтому мы стараемся оценить результат исключительно по данным. Допустим, чтобы обосновать утверждение, что игроки одного уровня играют лучше в группе, чем по-отдельности, мы используем логическую регрессию . Она вычисляет уровень бонусных очков рейтинга при победе, поражении.

Еще одним примером статистического анализа может служить процесс нахождения порога, по которому определяется подходящий подбор игрока. Для вычисления этого параметра мы используем оценку качества матча. Один из параметров - баланс в количестве полученного золота. Это легко показать на графике. Мы вычисляем интеграл с того момента, когда граф пересек нулевой порог (красная область). Чем эта площадь меньше, тем более сбалансирована игра.

Хотя на определенном этапе матча Dire имели 10,000 преимущества, Radiant вышли вперед на какое-то время после. Тем не менее наша система считает команды из данного примера близкими по силе.

Имея данные техники мы можем экспериментировать в с временем поиска, меняя порог подбора. После этого мы анализируем результаты и делаем поправки снова.

Вывод

Надеемся, что данная статья прояснит для вас по какой системе происходит выбор игроков. Как и во все остальное, мы также постоянно вносим изменения в данную систему. Подбор никогда не будет идеальным из-за множественных технических трудностей, но мы хотим, чтобы вы получали удовольствие от игры.

Дождались! Больше никаких переносов и отложенных анонсов. В клиенте уже стартовал новый рейтинговый сезон с дивизионами и медалями. Рассказываем, чем он отличается от прежней системы и может ли решить хоть какие-то проблемы матчмейкинга.

Как было раньше

Рейтинговая система в появилась в декабре 2013 года. Теперь мастерство пользователей отмечалось не только количеством побед, но и цифрой в профиле, которую можно было увеличивать, играя в рейтинговых матчах. С этого момента в началась гонка за очками.

За три года у системы появилось множество проблем. В первую очередь это бустеры, которые предлагали за деньги купить аккаунты с определённым MMR или предоставить им доступ к вашему профилю для прокачки. Из-за этого страдали все: на средних и высоких MMR оказывались игроки, которые недотягивают до них по личному мастерству, а на низких уровнях пользователи страдали от безжалостных бустеров, разрушающих весь интерес к игре.

В это время про-игроки и другие умелые ребята, добравшиеся до 8-9 тысяч очков, были вынуждены часами ждать рейтинговый матч. Разработчики пытались «подкрутить» систему подбора, но каждый раз сталкивались с новой порцией критики: то разброс MMR слишком большой, то география регионов не учитывается, то снова стало слишком долго ждать. В итоге киберспортсмены заводили вторые аккаунты и шли играть на низком MMR, что вряд ли могло устроить его естественных обитателей.

Добавьте к этому игроков, которые бросали рейтинговые матчи после достижения крупной отметки. Тех, кто во время одного патча просто спамил сильного героя ради цифр. А также ребят, которые забрасывали игру на несколько месяцев, а потом возвращались, явно теряя в мастерстве, но без изменения рейтинга. Всё это превращало MMR в не самую показательную цифру. А групповой рейтинг так и вовсе стал ненужным придатком для счастливчиков, у которых нашлись друзья.

Причин что-то поменять была масса. И Valve попробовала сделать первый шаг в светлое будущее.

Как система работает теперь

Вместо цифр в профилях игроков отображаются дивизионы и медали. Всего лиг семь: Herald, Guardian, Crusader, Archon, Legend, Ancient и Divine. В каждой из них есть по пять ступеней-медалей, которые отображают продвижение игрока по рейтинговой системе.

Но главное изменение - это необходимость каждые шесть месяцев проходить калибровку в 10 матчах. Изначально система будет учитывать текущий уровень игрока, но к финальной игре она должна определить его в соответствующую категорию. Калибровочные игры в первом сезоне основываются на MMR пользователей, а разработчики изначально даже забыли убрать показатель среднего уровня игроков на старте матча.

Вместо среднего MMR и цифр в профиле игрока отображается его дивизион и медаль. Один раз достиг высокой отметки - и даже если дальше тебя ждет полоса неудач, рядом с твоим именем будет красоваться значок высокого ранга. Больше никаких удручающих и уменьшающихся цифр, от взгляда на которые больше не хочется играть. Но если хочется следить за прогрессом, в разделе статистики все также остались цифры в верхнем правом углу. И да, после калибровки они, скорее всего, станут меньше привычных.

Групповой рейтинг теперь не просто лишняя цифра. Теперь победы и поражения в команде будут учитываться в вашем личном ранге. Можно играть с друзьями и продолжать набирать звёздочки, а не копить никому не интересное число в профиле. Правда, влиять групповые игры будут меньше, чем индивидуальные. А уже после достижения уровня Ancient командные победы и вовсе перестанут влиять на продвижение. Дальше - только в соло.

Рейтинговая таблица, которая формировалась из 200 лучших игроков каждого региона, теперь будет работать иначе. В неё смогут попасть все пользователи, которые добрались до пятой медали дивизиона Divine. Помимо медали и картинки с рапирой в их профиле отображается строчка в мировом рейтинге.

На что это повлияет?

Теперь игроки будут гоняться не за цифрами, а за картинками. Разработчики как всегда не стали делиться подробностями, изменилось ли что-то во «внутренностях» системы. Пока это выглядит как всё тот же рейтинг, только с медальками вместо круглых чисел или значимых отметок.

Предполагается, что теперь значимость бустинга для игроков значительно упадёт. Мол, зачем покупать прокачку аккаунта, если через несколько месяцев снова придётся калиброваться наравне со всеми? Но зато сколько будет желающих помочь вам в этой калибровке! Естественно, за отдельную плату. И снова игроки будут оказываться на пару уровней выше, превращая старт сезона в очередное игровое наказание.

Зато новая рейтинговая система, как и любая новинка, привлечёт в новичков и может вернуть тех, кто отказался от игры. Особенно тех пользователей, которые застряли на определенной цифровой отметке и перестали видеть прогресс. В надежде на изменения они могут вернуться в , чтобы начать свою рейтинговую жизнь заново. И так каждые полгода, пока не заметят подвоха…

Но насколько бы привлекательным ни казался дивный новый мир с медалями и званиями, игроки рекомендуют повременить с калибровкой. Во-первых, Valve уже выпустила несколько обновлений, которые исправляют мелкие недочёты. Во-вторых, стоит подождать пару дней, чтобы понять, какие факторы во время калибровочных матчей влияют на твой будущий статус. Да, с этими данными появятся толпы «абузеров», но будет немного обидно оказаться «герольдом» просто потому, что ты играл на саппортах-вардоносах, а рейтинг основывают на твоём KDA или количестве урона по врагам. К тому же можно проследить, какой рейтинг получают игроки разного уровня, чтобы в случае чего не отчаиваться заранее. Вдруг всех изначально посвятят в «крестоносцы», сколько ты ни старайся.

Профессиональные игроки отмечают, что подобная обновляющаяся рейтинговая система, даже без конкретных цифр - это отличный шанс для молодых и талантливых ребят. Пробиться на верхние строчки рейтинга станет проще, а медали будут показывать твои текущие заслуги, а не прошлые достижения, так что заприметить новичка в мировом топе теперь легче.

А зрители теперь смогут насладиться десятками трансляций про-игроков и стримеров, которые будут брать новые высоты. Уже сейчас к стримам вернулись те, кто не запускал их месяцами. Возможно, это будет немного интересней и увлекательней, чем +/-25. Например, Артур Arteezy Бабаев, который решит за один стрим взять Divine во что бы то ни стало.

Чего не хватает новой системе?

Конкретики. Что изменилось, кроме появления красивой картинки в профиле? Будут ли соперники и союзники знать твой текущий рейтинг или только максимальный за сезон? Как новая система с медалями повлияет на подбор игроков в рейтинге? Пока игроки узнали только о дивизионах, а все остальное опять придётся выяснять опытным путём. Если есть что выяснять.

Сезонных наград. Медаль - это, конечно, хорошо и приятно. Но она даже не шоколадная. Мало того, тебе может не нравиться эта картинка и радоваться будет совсем нечему. Почему бы не дать игрокам немножко больше мотивации, чем звёздочка в профиле? Сундук, сет, билет на Battle Cup (если они продолжат существовать). Какая-то награда, которая будет ощутима хотя бы в инвентаре.

Изменения системы наказаний. «Дело не в MMR, дело в людях», - твердили игроки, когда Valve только анонсировали изменение системы рейтинга. Станет ли в меньше руинеров и гневно настроенных ребят от того, что они видят не цифру, а картинку? Определённо нет. Просто вместо «2k MMR-мусора» они теперь будут называть друг друга «чёртовыми герольдами». И снова фидить по миду, потому что им за это ничего не будет.

Поиска по ролям. Самая давняя просьба игроков на любом рейтинге. Когда в очередной раз играешь пиком, как будто его рандомили Na"Vi на Midas Mode, где вместо саппорта по карте бегает роумящий Slark, тебе не захочется играть, даже если тебе дадут все медали мира. Договориться о распределении ролей на стадии планирования практически невозможно, так почему бы не сделать это ещё до нажатия кнопки поиска?

На сайтах и блогах часто можно встретить различные системы оценивания материала (статей, фотографий, видео). Некоторые ограничиваются кнопками, показывающими социальную активность пользователей. А некоторые используют вспомогательные скрипты и плагины для создания рейтингов.

Об одной из таких систем для WordPress сайта, которую вы, наверняка, уже не раз видели, я и хочу написать. А именно – про плагин оценки записей с помощью звездочек .

Давайте рассмотрим, какие выгоды несут подобные рейтинги сайту и его владельцу:


Исходя из второго пункта, можно вывести минус этой системы – маленький рейтинг приведет к понижению доверия со стороны посетителя. По этой самой причине вы и не видите установленного на моем блоге рейтинга.

Данная проблема решается двумя способами :

  1. Естественным . При наличии костяка, который активно участвует в жизни блога (комментарии, участие в опросах и прочее).
  2. Искусственной накруткой . Самое простое решение - правка таблицы плагина WP-PostRatings в базе данных. Так же можно использовать другие методы (например, ручная простановка с использованием динамического ip-адреса).

Первый, увы, мне не доступен, а после второго я себя уважать перестану.

Если обратите внимание на комментарии, то увидите, что обращать внимание не на что. Так уж случилось, что заниматься этим проектом я начал уже на закате эпохи блогов. Соответственно всех радостей гостевого блоггинга, кооперирования, взаимного комментирования, я не застал. А комментировать самому свой блог для поднятия важности в глазах читателей, как я уже сказал, мешает совесть. Хотя, надеюсь, в конечном итоге алчность победит.

Ну да ладно, перейдем к обзору WordPress плагина рейтинга постов .

Плагин рейтинга постов в WordPress

С помощью плагина WP-PostRatings можно легко сделать систему оценивания статей.

Что примечательно, он реализован на системе Ajax.

Имеет более миллиона скачиваний.

Совместим с версиями WordPressот 2.8 и выше.

Установка плагина оценки записей WP-PostRatings

Скачать и установить WP-PostRatings можно любым из доступных способов: напрямую из административной панели, либо взять плагин по ссылке и закинуть в папку с плагинами. Подробную инструкцию по установке читайте .

Настройка WP-PostRatings

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

Самое главное, установите галочку в положении Yes напротив Enable Google Rich Snippets . Данная опция внесет специальную разметку, которая позволит отображать в результатах поиска Google звездочный рейтинг.

Так же тут можно настроить визуальные эффекты загрузки и ограничить возможность голосования только для зарегистрированных пользователей.

Установка плагина WP-PostRatings в записи и на страницы

К сожалению, или к счастью, данный плагин не вставляет автоматически код вывода звездочек внизу или сверху статьи. А значит, это придется делать самостоятельно. Плюсом есть то, что вы сами определите место, в котором будут отображаться звездочки.

Прежде всего, вам нужно перейти в папку вашей темы

wp-content\themes\ваша тема\

Там вы найдете файлы single.php и page.php, которые отвечают за вывод записей и страниц соответственно.

Открываете нужный файл с помощью текстового редактора notepad++ или обычного текстового редактора и вставляете код:

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

(ratings без пробела )

Так же можно настроить вывод самых популярных (на основе рейтинга) постов в виджете, либо в любом другом месте шаблона вашего сайта с помощью кода:

Либо же самых оцениваемых постов: get_most_rated .

Значение both означает, что будут выводиться и страницы и записи. Его можно поменять только на post или только page. 0 – минимальное число оценок. 10 – количество выводимых записей.

Кстати, после завершения всех настроек, проверьте в инструментах проверки структурированных данных свой сайт. Если все указанно верно, то вы увидите (предварительно очистите кэш, если стоит один из плагинов кэширования).

9 ноября 2010 в 20:35

Алгоритм популярности пользователя на сайте - «Нестандартный подход к стандартным вещам»

  • PHP

Все видели на сайтах систему рейтинга статей и материалов. Многие ее даже делали сами, но не каждый делал рейтинг людей на сайте.
В этой статье я поведаю как сделать качественную систему рейтинга для пользователей вашего ресурса.

Сначала я проведу линию для вас разных алгоритмов рейтинга:
I - Пользователи получают только "+"
Основные преимущества:

  • Нету заморочек.
Недостатки:
  • один человек, один балл.

II - Пользователи получают "+" и "-"
Больших отличий мало от прошлой системы. Добавилось еще одно поле в базе.
Основные преимущества:

  • Нету заморочек.
  • Минимальные нагрузки на сайт и базу.
Недостатки:
  • один человек, один балл.
  • Личный авторитет на сайте/форуме ничего не стоит. Ты одна единица и все.

III - гипербола от @klim-danilovklim-danilov
Да, это довольно интересная идея но для оценки материала. Но не пользователей.
Основные преимущества:

  • «вес каждого плюса или минуса постоянно уменьшается в два раза, в порядке хронологии.
    То есть первый юзер ставит плюс весом в +50 балла, следующий ставит плюс весом в +25 балла, минус в -50 балла, минус в -25, минус в -12,5 баллов»
Недостатки:
  • Каждый последующий голос уже имеет меньший вес.
  • Система еще не закончена.

IV - среднее статистическое
Одна из самых распостраненных систем. В основе лежит общая сумма проголосовавших и общий бал деленный друг на друга.
Основные преимущества:

  • Система давно проверена и работает.
  • Не высокие затраты ресурсов.
Недостатки:
  • Пользователю дано право голосовать с минимума до максимума. А обычно по статистике пользователи ставят самый низкий балл или самый высокий.
  • Система для оценки исключительно материала.

V - плавающая система
В основе принципа лежит изменение кармы в сторону плюса или минуса.
Основные преимущества:

  • Пожалуй самая лучшая система для оценки пользователей/материала.
  • Не высокие затраты ресурсов.
Недостатки:
  • И снова. Твой авторитет на сайте/форуме в рейтенговой системе ничего не стоит.

Теперь я внесу свою лепту.
Зачем изобретать велосипед было, когда уже существуют алгоритмы оценки людей?
- А ответ прост, они не являются корректными когда идет разговор о том, что нужно выделить действительно авторитетных людей на ресурсе.

В основе алгоритма лежит геометрическая фигура «прямоугольного треугольника».
Да порой в геометрии мы можем найти вполне необычные вещи.

Почему был избран именно треугольник?
Дело в том что высота треугольника может соответствовать рейтингу пользователя который ставит оценку.
Длина треугольнка рейтингу которому ставят оценку. А гипотенуза как раз та разнице между авторитетами пользователей.

Теперь приступим к самому интересному.
$a = 254; // Рейтинг пользователя голосующего $b = 47; // Рейтинг пользователя получающего голос /* Установим стандартные цифры, которые можно встретить на любом форуме*/ if($b<=0){ $b=1; } /* Проверяем наличие нуля и отрицательного числа в переменной $b */ ### Получаем квадрат стороны А * 2 ### $aInSquare = ($a * 2) * ($a * 2); /* Сейчас вы спросите, а почему мы увеличиваем значение переменной в 2 раза? Методом научного тыка, я увидел что когда у переменной $a число больше в 2 раза, то и результат получается более естественным */ ### Получаем квадрат стороны B ### $bInSquare = $b * $b; ###Получаем квадрат стороны гипотенузы ### $cInSquare = $bInSquare + $aInSquare; ### Получаем длину гипотенузы### $c = sqrt($cInSquare); $result = (int) round($c / $b); /* Делим полученный результат гипотенузы на содержимое стороны $b и сводим значение в целое с помощью округления и превращения числа в int */ if($result > $b / 2){ $result = (int) round($b / 2); } /* Проверим чтоб пользователю не прилетело слишком много баллов. Если ему поставл очень авторитетный человек, то карма максимум возрастет на 50% */ var_dump($result); /* А в конце мы получим ответ 11, это число как раз адекватно поднимит карму пользователя. */ ?>
Может кто-то спросит. А почему не использовал формулу $result = ($a * 2) / $b;?
Данная формула не адекватно работает когда $a меньше $b более чем в 2 раза.

В течении пары месяцев мной будет закончено написание проекта (об этом я напишу после закрытого бета-тестирования).
Алгоритм будет проверен на реальном проекте, где это критически необходимо.

После тысячи тестов с $a = rand(0,99999); $b = rand(0,99999);
я пришел к паре багов:
1й - делить на 0.
Исправил if($b<=0){ $b=1; }

2й - когда получающий пользователь имеет 1 балл, и получает от пользователя с 1000, то его объем получающегося становится 2000
Исправил if($result > $b / 2){ $result = (int) round($b / 2); } Максимум можно увеличить на 50%.

Бенчмарк Code-Igniter не дал результатов нагрузки (0,0000).

Всем спасибо. Ищите вдохновление во всем что видите.

Понравилась статья? Поделитесь с друзьями!
Была ли эта статья полезной?
Да
Нет
Спасибо, за Ваш отзыв!
Что-то пошло не так и Ваш голос не был учтен.
Спасибо. Ваше сообщение отправлено
Нашли в тексте ошибку?
Выделите её, нажмите Ctrl + Enter и мы всё исправим!