トピックがN件未満のタグを削除する機能

この素晴らしい機能「未使用タグの削除」を偶然見つけ、もっと欲しいと思いました!

A comprehensive guide to Discourse tags からの議論を続けます:

タグの作成が全く制限されていないため、多くの人がハッシュタグのように扱っているせいで、「件数: 1」のタグが多数存在します。タグに関する権限は開放したままにしたいと考えていますが、定期的に整理しやすくすることは望ましいことです。

人々がタグを「関連トピックのグループ化」の手段として捉え、二度以上使われると見込まれる(あるいは分かっている)場合のみタグを作成するように促す方法を見つけたいです。

しかし、それまでの間、既存の機能を拡張して「特定の件数未満のトピックで使用されているタグを削除する」機能を実装できれば、私たちにとって大きな改善になると思います。

「いいね!」 4

さらに高度な機能として、以下の条件に基づいてタグを自動的にスキャンし、削除する設定を想像できます。

count < N && topic_last_updated > X months ago

基本的には、タグに定着する機会を与えます。一定のタイムアウト前に新しいトピックが投稿されれば、その寿命は更新されます。しかし、もし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

トピックが1の場合に削除するには、どのように実行すればよいですか?

デフォルトのクリーナーはトピックのないタグのみを削除するためです。スタッフを教育しており、新規作成を制限しました。