Возможность удаления тегов с < N темами

Я только что наткнулся на эту замечательную функцию «Удалить неиспользуемые теги», и она оставила меня wanting большего!

Продолжение обсуждения из Полное руководство по тегам Discourse:

У нас много тегов с «count: 1», так как создание тегов никак не ограничено, и некоторые пользователи просто используют их как хештеги. Я по-прежнему считаю, что права на создание тегов должны быть открытыми, но было бы здорово иметь возможность периодически легче пропалывать наш сад.

Мне бы очень хотелось найти способы подтолкнуть людей к тому, чтобы они рассматривали теги как средство «группировки» связанных тем и создавали их только тогда, когда они думают (или знают!), что теги будут использоваться более одного раза.

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

4 лайка

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

count < N && topic_last_updated > X месяцев назад

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

6 лайков

Я тоже считаю, что это хорошие предложения по улучшению функции очистки тегов, @neil

2 лайка

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

2 лайка

Тем временем, вот запрос #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
5 лайков

Извините за всплытие темы,

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

Спасибо.

1 лайк

Итак, как запустить его для удаления, если topics = 1?

Поскольку стандартный очиститель удаляет только теги без тем. Мы обучаем наш персонал и ограничили создание новых тем.