Что не так с тегами
Глядя на клиент golos.id возникает чёткое ощущение, что он задумывался как аналог reddit, но что-то пошло не так. Вот смотрите: справа есть список "Тэги и топики". Можно ткнуть в любой тег и вы попадёте в отдельные ленты "новое/актуальное/популярное"! Для каждого тега свои ленты.
Теги - это ничто иное как аналог сабреддитов. Сабреддит это по сути сообщество внутри reddit, со своей тематикой, правилами и модераторами. Можно зайти в сабреддит и там будет свой Hot и Top. Можно подписаться на конкретные сабреддиты и тогда главная страница reddit будет показывать контент только из них.
Но у нас теги используются совершенно не так, а просто лепятся как попало без ума. Список тегов справа - динамический и берётся с ноды через API get_trending_tags
, и в результате получается какая-то дичь. С этим пора кончать.
Как поправить
Очень просто, список тегов на клиенте должен быть фиксированным, а учитываться должен только первый тег. При постинге пользователь должен иметь возможность выбрать только 1 тег.
Фиксированный список тегов - это что-то типа традиционного "политика, экономика, музыка, программирование". В общем community решает какие категории хочет видеть. В дальнейшем можно добавлять новые теги через голосование community, а так же сделать платную услугу по запилу своего "тегосообщества" (типа chaos-legion), возможно через сожжение GBG. Теги изначально делать на русском, для иностранцев выделить тег "en", а в дальнейшем если они будут подтягиваться, запиливать им отдельные тематические "тегосообщества".
Общие ленты ("Популярное" и т.д.) тоже должны фильтроваться на предмет показа только одобренных тегов.
Что не так с лентами
У нас есть две ленты, "актуальное" и "популярное". В их ранжировании используется тот же механизм, что и на reddit, кому интересны детали, читайте прекрасную статью https://medium.com/hacking-and-gonzo/how-reddit-ranking-algorithms-work-ef111e33d0d9#.lcbj6auuw
Кратко, score поста зависит от количества положительных голосов (net_rshares
), и от времени создания. Если у более нового поста столько же net_rshares
, сколько у более старого, то score у него будет выше. Т.е. новые статьи вытесняют предыдущие, и срок жизни статьи в "актуальном" 3 часа, а в "популярном" - 5.5 дней (plugins/tags/tag_visitor.cpp
operation_visitor::calculate_hot
).
Собственно что не так, а то что лент всего две и обе они по сути Hot. Нет реального топа за неделю, месяц, год и за всё время. В новой парадигме донатов такой расклад совершенно не годится. Хорошие посты должны быть доступны долгое время через нахождение в топ лентах.
Ну и 3 часа для "Актуального" это мало, сделать там например 1 день.
С имплементацией таких топ-лент возникает проблема, т.к. механики в ноде на такое не рассчитаны:
- При закрытии окна выплат у поста значение
net_rshares
сбрасывается в 0, причём раньше у нас было 2 окна выплат, и сброс происходил дважды - Голосование за посты с закрытым окном никак не влияет на net_rshares
- Нода не имеет API для получения топа по
net_rshares
за разные периоды времени
Таким образом, требуется внесение изменений в код:
net_rshares
не сбрасывать в 0, а сохранять (а для старого времени с двумя окнами - записывать суммарное значение rshares после отработки выплат)- Сделать механику голосования для архивных постов, т.е. чтобы ап/флаг так же влиял на net_rshares
- Изучить возможность добавления API для получения топов: дневного, недельного, месячного, годового, за всё время. Надо понять, утяжелит ли это ноду, если да, то насколько, и не треснет ли она вообще. Альтернативно, можно строить такие топы вовсе без участия ноды, для этого достаточно только корректного сохранения
net_rshares
в объекте поста. Всю обработку может делать отдельный специальный микросервис, который будет отдавать топы уже через своё API
@vvk
Давайте первый тег называть своим именем: категория.
Ограниченное количество категорий и пр.
А теги - всё, что после первого.
А первый - выбирать из фиксированного списка, где по дефолту будет просто стоять, скажем, golos.
@vvk я бы сделал 1 бесплатный тег и остальные за деньги)
Суть в том чтобы пост попадал в конкретную категорию. Если его показывать в нескольких, в какой-либо из них его запросто могут зафлаговать как нерелевантный.
@vvk ну и отлично. Заплатил и флагов нахватает. Жизнь должна чемуто
@vvk он может попадать в категорию по первому тегу, а остальные пусть остаются, например для продвинутого поиска по тегам
@vvk Да там всё норм, ты лучше поясни, почему мне вознаграждение не приходит за посты и оценки? Загляни в мой кошелёк, там поступления только от привета.
@finder х.з. куда ты смотришь, но авторские и кураторские награды у тебя сыплются.
@vvk Таки куда они сыплются? Ответ будет?
Там колонка "Награды".
@vvk А как их монетизировать? В местную валюту?
@vvk Как куда, в свой акаунт. Нет там ничего кроме плюшек от привета.
@vvk , согласна. Порой первый тег из топа выберешь, опубликуешь пост. Через несколько минут выбираешь свой первый тег и ожидаешь увидеть в ленте свой пост, а он не отображается. И сразу думаешь: какой смысл тогда этого тега?
@vvk Согласен, поддерживаю
@vvk, Поздравляю!
Ваш пост был упомянут в моем хит-параде в следующих категориях:
@vvk нормальные онлайн-ресурсы меньше всего полагаются на тэги. Пользователям скармливают "релевантный контент". Зачастую ничего не надо искать самому.
Система рекомендаций это отдельная тема, может быть просто блок с рекомендациями. Это дело будущего. А категоризация это нормальная практика отработанная годами. Иди скажи вот этим ребятам что категории надо выпилить и оставить только рекомендации https://2ch.hk/
И ещё сделать, чтобы по тэгам можно было найти старые посты. Если не ошибаюсь, показываются только те, у которых не закрыто окно выплат.
@vvk как насчет того, чтобы объединить Популярное и Промо ?
Ранжировать посты в соответствии с суммой заработанного и сожженного.
В популярном сортировка по
net_rshares
, это разные величины, их проблематично объединить. Вместо этого думаю лучше сделать несколько промо-мест и продавать их, например одно промо-место через каждые 20 постов.@vvk я просто думал о ситуациях, когда кто то, допустим, на пятом месте, а хочет быть на первом - ну и сжигает немного, чтобы переместиться повыше.
Такая альтернатива бустерам.
Я понял идею. Такую логику можно организовать на клиенте при желании. 1 GBG приравнять к голосам 10 MGESTS например.
@vvk это еще работало бы и на поддержку курса GbG, если при сжигании курс всегда был бы постоянным и "честным", без применения принципа haircut
@vvk отличное предложение, спасибо за мысли!
@vvk ...с тегами реально творится черти что...можно просто ошибочно набрать одну букву в первом теге, не заметить этого и опубликовать пост...и такой тэг появится в системе!...я за ограниченное количество тэгов однозначно!...
@vvk отличная идея
Весьма интересное предложение, думаю стоит голоснуть на предмет включения изменений "по тегам" в следующий ХФ (вместе с портированием системы донатов с валешарес)...
Ну с тегами в общем-то ХФ не нужен, можно на клиенте выполнять фильтрацию. Есть такое поле category, наш клиент туда запихивает первый тег. Точно так же, клиент может разрешать выбирать только одну категорию, это уже закроет непонимание.
@vvk Согласен с предложениями. Они необходимы.