能够删除少于 N 个主题的标签

我刚刚偶然发现了这个很棒的功能“删除未使用的标签”,这让我意犹未尽!

继续讨论 Discourse 标签的综合指南

我们有许多标签的“使用次数: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 的内容?

因为默认的清理程序只会删除没有主题的标签。我们正在培训我们的员工,并且我限制了新内容的创建。