Wir haben viele Tags mit „Anzahl: 1", da die Erstellung von Tags überhaupt nicht eingeschränkt ist und einige Leute sie einfach wie Hashtags behandeln. Ich bin immer noch der Meinung, dass die Berechtigungen für Tags offen bleiben sollten, aber es wäre schön, den Garten gelegentlich leichter ausmisten zu können.
Ich würde gerne Wege finden, die Leute dazu zu ermutigen, Tags als Mittel zur „Gruppierung" verwandter Themen zu betrachten und nur dann neue Tags zu erstellen, wenn sie denken (oder wissen!), dass diese mehr als einmal verwendet werden.
Aber in der Zwischenzeit halte ich es für eine schöne Verbesserung, die wir nutzen würden, die bestehende Funktion so zu erweitern, dass man Tags löschen kann, die von weniger als __ Themen verwendet werden.
Noch eleganter wäre es, wenn man eine Einstellung vorfinden könnte, die automatisch Tags durchsucht und auf Basis folgender Kriterien löscht:
count < N && topic_last_updated > X Monate her
Im Grunde gibt man Tags die Chance, sich zu etablieren. Ihre Lebensdauer wird verlängert, wenn neue Themen vor Ablauf einer bestimmten Frist erstellt werden. Wenn jedoch seit mehr als beispielsweise 3 Monaten keine neuen Themen erstellt wurden und das Tag weniger als 5 Themen umfasst, wird es einfach entfernt.
Ich habe diesen Button auch noch nie gesehen, und ich stimme zu, dass eine automatische Bereinigungsfunktion nützlich wäre. Sie sollte jedoch darauf achten, keine nur für das Personal freigegebenen Tags zu löschen. Es gibt wahrscheinlich weitere Fälle, in denen bestimmte Tags nicht automatisch gelöscht werden sollten.
In der Zwischenzeit finden Sie hier eine #plugin:data-explorer-Abfrage, die helfen kann, Kandidaten für das Löschen von Tags zu identifizieren:
-- [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