Possibilità di eliminare tag con meno di N argomenti

Ho appena scoperto questa fantastica funzionalità, “elimina tag non utilizzati”, e mi ha lasciato desiderare di più!

Proseguendo la discussione da Una guida completa ai tag di Discourse:

Abbiamo molti tag con “count: 1”, poiché la creazione dei tag non è affatto bloccata e alcune persone li trattano semplicemente come hashtag. Credo ancora nel mantenere aperte le autorizzazioni per i tag, ma sarebbe bello poter potare il giardino più facilmente e periodicamente.

Mi piacerebbe trovare modi per spingere le persone a considerare i tag come un mezzo per “raggruppare” argomenti correlati e a creare tag solo quando pensano (o sanno!) che verranno utilizzati più di una volta.

Nel frattempo, però, credo che estendere la funzionalità esistente per consentire l’“eliminazione dei tag utilizzati da meno di __ argomenti” potrebbe essere un ottimo miglioramento che useremmo.

4 Mi Piace

Ancora più avanzato, potrei immaginare un’impostazione che pulisca automaticamente i tag e li elimini in base ai seguenti criteri:

count < N && topic_last_updated > X mesi fa

In pratica, dai ai tag la possibilità di prendere piede. La loro vita viene rinnovata se vengono pubblicati nuovi argomenti prima di un certo timeout. Ma se non sono stati pubblicati nuovi argomenti da oltre, diciamo, 3 mesi e il tag ha meno di 5 argomenti, allora eliminalo semplicemente.

6 Mi Piace

Anche io penso che questi siano buoni suggerimenti per migliorare la funzione di pulizia dei tag @neil

2 Mi Piace

Non ho mai visto nemmeno io questo pulsante, e concordo sul fatto che una funzione di pulizia automatica sarebbe utile. Dovrebbe anche fare attenzione a non eliminare i tag riservati solo allo staff. Probabilmente ci sono altri casi in cui alcuni tag non dovrebbero essere eliminati automaticamente.

2 Mi Piace

Nel frattempo, ecco una query #plugin:data-explorer che può aiutare gli utenti a identificare i tag candidati per l’eliminazione:

-- [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 Mi Piace

Mi scuso per il ripescaggio,

Sì, questa funzionalità è fortemente necessaria, poiché alcuni utenti del mio forum hanno deciso che sarebbe stato divertente scherzare e pubblicare, diciamo, tag “interessanti” non adatti a tutte le età. Pertanto, mi piacerebbe vedere una funzionalità di questo tipo.

Grazie.

1 Mi Piace

Quindi come eseguirlo per eliminare se topics = 1?

Perché il pulitore predefinito elimina solo i tag senza argomenti. Stiamo formando il nostro personale e ho limitato la creazione di nuovi.