У нас много тегов с «count: 1», так как создание тегов никак не ограничено, и некоторые пользователи просто используют их как хештеги. Я по-прежнему считаю, что права на создание тегов должны быть открытыми, но было бы здорово иметь возможность периодически легче пропалывать наш сад.
Мне бы очень хотелось найти способы подтолкнуть людей к тому, чтобы они рассматривали теги как средство «группировки» связанных тем и создавали их только тогда, когда они думают (или знают!), что теги будут использоваться более одного раза.
Но тем временем я считаю, что расширение существующей функции для возможности «удаления тегов, используемых в менее чем __ темах», могло бы стать хорошим улучшением, которое мы бы использовали.
Ещё более продвинутый вариант: я мог бы представить настройку, которая автоматически очищает и удаляет теги на основе следующих критериев:
count < N && topic_last_updated > X месяцев назад
По сути, вы даёте тегам шанс закрепиться. Их жизнь продлевается, если новые темы появляются до истечения определённого таймаута. Но если за последние, скажем, 3 месяца не было создано ни одной новой темы, а у тега меньше 5 тем, то просто удалите его.
Я тоже никогда не видел эту кнопку, и я согласен, что функция автоматической очистки была бы полезной. При этом следует быть осторожным и не удалять теги, доступные только сотрудникам. Вероятно, существуют и другие случаи, когда некоторые теги не должны удаляться автоматически.
Тем временем, вот запрос #plugin:data-explorer, который поможет пользователям определить кандидаты на удаление тегов:
-- [params]
-- int :months_since_used = 24
-- int :max_topic_count = 50
with
t as (
select
current_date::timestamp - (:months_since_used * (INTERVAL '1 months')) as cutoff_date
),
topic_tag_dates as (
select tags.id, tags.name, tags.topic_count, topics.last_posted_at as last_used
from topic_tags
left join tags
on topic_tags.tag_id = tags.id
left join topics
on topic_tags.topic_id = topics.id
),
max_last_used as(
select id, max(last_used) mx from topic_tag_dates
group by id
),
tag_last_used as (
select topic_tag_dates.id, name, topic_count, last_used from topic_tag_dates
left join max_last_used
on topic_tag_dates.id = max_last_used.id
where max_last_used.mx = topic_tag_dates.last_used
)
select id,name,topic_count,last_used from tag_last_used, t
where tag_last_used.last_used < t.cutoff_date
and topic_count < :max_topic_count
order by topic_count desc
Да — это очень нужно, так как некоторые участники моего форума решили пошутить и начали размещать, скажем так, «интересные» теги, не подходящие для всех возрастов, поэтому я хотел бы видеть подобную функцию.