Предложение о расширении функциональности фичи форума "список друзей".

_vb_
На сайте с 25.07.2009
Offline
104
724

Приветствую сообщество.

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

Зачем это нужно.

На форуме зарегистрировано большое число участников. Среди этого множества народа, лично я непроизвольно уже выделил для себя подмножество компетентных и авторитетных (для меня) участников, посты которых в большинстве своем содержательны и интересны для меня.

Глядя на список топиков раздела или результатов поиска, трудно определить, стоит ли тратить время на просмотр топика, есть ли в нем посты тех участников, мнение которых для меня интересно. Хорошо, если ТС либо последний отписавшийся в топике как раз из "моего" списка. А если посты таких участников находятся где-то посередине длинного топика, то найти их довольно затруднительно.

Суть предложения заключается в расширении функциональности форумной фичи "список друзей".

В списках топиков разделов/результатов поиска после ника ТС отображать ники из списка друзей, отписавшихся в топике. Каждый ник может быть ссылкой на первый пост данного ника в этом топике. Если количество участников из "списка друзей" велико, то отображать только первые n ников отписавшихся.

Алгоритм выбора ников для этого списка и его ранжирования может быть как совсем простым - скажем, сортировать по репе, так и достаточно сложным - учитывать интенсивность постинга участников в данном разделе и т.п. Можно спецов из Яндекса привлечь для консультаций, если что ;)

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

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

Можно добавить влияние числа включений ника участника в эти "списки друзей" на его репу, ну и т.д.

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

Вот как-то так. Спасибо за внимание :)

Саратовская фракция серча (). Давайте посчитаемся.
Lupus
На сайте с 02.11.2002
Offline
241
#1

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

После того, как вы выложите цифру (примерную), с удовольствием продолжим разговор о вашем предложении.

There are two types of people in this world: 1. Those who can extrapolate from incomplete data.
_vb_
На сайте с 25.07.2009
Offline
104
#2

Если считать пост уважаемого участника Lupus за одобрение полезности предложения, то тогда вот:

0. Предполагается, что "таблицы друзей" имеет следующие поля:


id_участника
id_друга

1. В БД форума предлагается добавить таблицу "постов друзей" со следующими полями:


id_участника
id_друга
id_топика
id_поста

2. Внести следующие изменения в процедуры редактирования списка друзей в личном кабинете участника:

2.1. При добавлении участником нового друга в "список друзей":

вариант а) ничего не делать. тогда после добавления друга в список, будут индицироваться только его новые посты, сделанные после этого добавления.

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

при этом индикация постов добавленного друга будет доступна и по всем старым топикам.

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

2.2. При удалении участником друга из "списка друзей":

Удалять из таблицы "постов друзей" записи по ключу id_участника+id_друга(удаляемого)

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

3. Внести следующие изменения в процедуру сохранения нового поста:

3.1. Выбрать из "таблицы друзей" всех участников, в друзьях у которых состоит автор поста.

3.2. Добавить в таблицу "постов друзей" соответствующие новые записи в количестве равном количеству выбранных в п.3.1. участников. При этом поле id_друга содержит id автора поста.

3.3. В процедуру удаления поста внести код, выполняющий удаление соответствующих записей из таблицы "постов друзей".

4. При формировании списка топиков, если у участника выключен чекбокс из п.2.3 - использовать текущий запрос. Если чекбокс включен, то необходимые данные можно получить двумя путями:

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

4.2. Изменить текущий запрос[ы] (не знаю, как оно сейчас реализовано), используемые при формировании списка топиков, приджойнив соотв. поля к результирующей выборке. Все возможности для этого вроде есть. В этом случае кол-во запросов к БД при выводе списка топиков не измениться.

Lupus:

После того, как вы выложите цифру (примерную), с удовольствием продолжим разговор о вашем предложении.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий