Что не так с тэгами и лентами и что с этим делать


Что не так с тегами

Глядя на клиент 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

Comments 42


@vvk Согласен с предложениями. Они необходимы.

22.12.2019 16:20
0

Весьма интересное предложение, думаю стоит голоснуть на предмет включения изменений "по тегам" в следующий ХФ (вместе с портированием системы донатов с валешарес)...

22.12.2019 16:23
0

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

22.12.2019 16:29
3

@vvk отличная идея

22.12.2019 16:29
0

@vvk ...с тегами реально творится черти что...можно просто ошибочно набрать одну букву в первом теге, не заметить этого и опубликовать пост...и такой тэг появится в системе!...я за ограниченное количество тэгов однозначно!...

22.12.2019 16:50
0

@vvk я бы сделал 1 бесплатный тег и остальные за деньги)

22.12.2019 17:01
1

Суть в том чтобы пост попадал в конкретную категорию. Если его показывать в нескольких, в какой-либо из них его запросто могут зафлаговать как нерелевантный.

22.12.2019 17:06
0

@vvk он может попадать в категорию по первому тегу, а остальные пусть остаются, например для продвинутого поиска по тегам

22.12.2019 21:15
0

@vvk ну и отлично. Заплатил и флагов нахватает. Жизнь должна чемуто

23.12.2019 12:13
0

@vvk отличное предложение, спасибо за мысли!

22.12.2019 17:33
0

@vvk как насчет того, чтобы объединить Популярное и Промо ?
Ранжировать посты в соответствии с суммой заработанного и сожженного.

22.12.2019 18:07
0

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

22.12.2019 18:40
1

@vvk я просто думал о ситуациях, когда кто то, допустим, на пятом месте, а хочет быть на первом - ну и сжигает немного, чтобы переместиться повыше.
Такая альтернатива бустерам.

22.12.2019 19:02
0

Я понял идею. Такую логику можно организовать на клиенте при желании. 1 GBG приравнять к голосам 10 MGESTS например.

22.12.2019 19:09
1

@vvk это еще работало бы и на поддержку курса GbG, если при сжигании курс всегда был бы постоянным и "честным", без применения принципа haircut

23.12.2019 14:37
0

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

22.12.2019 18:27
0

@vvk нормальные онлайн-ресурсы меньше всего полагаются на тэги. Пользователям скармливают "релевантный контент". Зачастую ничего не надо искать самому.

22.12.2019 18:34
0

Система рекомендаций это отдельная тема, может быть просто блок с рекомендациями. Это дело будущего. А категоризация это нормальная практика отработанная годами. Иди скажи вот этим ребятам что категории надо выпилить и оставить только рекомендации https://2ch.hk/

22.12.2019 18:43
0

@vvk
Давайте первый тег называть своим именем: категория.

Ограниченное количество категорий и пр.
А теги - всё, что после первого.

А первый - выбирать из фиксированного списка, где по дефолту будет просто стоять, скажем, golos.

23.12.2019 02:14
10

@vvk, Поздравляю!
Ваш пост был упомянут в моем хит-параде в следующих категориях:

  • комментарии - 2 позицию - 17 комментарии
  • Потенциальных Выплаты - 8 позицию - 193,486 GBG
23.12.2019 06:09
0

@vvk Да там всё норм, ты лучше поясни, почему мне вознаграждение не приходит за посты и оценки? Загляни в мой кошелёк, там поступления только от привета.

23.12.2019 12:48
1

@finder х.з. куда ты смотришь, но авторские и кураторские награды у тебя сыплются.

23.12.2019 12:52
0

@vvk Как куда, в свой акаунт. Нет там ничего кроме плюшек от привета.

23.12.2019 12:54
0

@vvk Таки куда они сыплются? Ответ будет?

24.12.2019 09:55
0

Там колонка "Награды".

24.12.2019 11:35
0

@vvk А как их монетизировать? В местную валюту?

24.12.2019 12:01
0

@vvk Согласен, поддерживаю

28.12.2019 11:53
0

@vvk , согласна. Порой первый тег из топа выберешь, опубликуешь пост. Через несколько минут выбираешь свой первый тег и ожидаешь увидеть в ленте свой пост, а он не отображается. И сразу думаешь: какой смысл тогда этого тега?

29.12.2019 20:15
0