Capacidade de excluir tags com menos de N tópicos

Acabei de descobrir essa funcionalidade maravilhosa: “excluir tags não utilizadas”. E isso me deixou querendo mais!

Continuando a discussão de Um guia abrangente sobre as tags do Discourse:

Temos muitas tags com “contagem: 1”, pois a criação de tags não é de forma alguma restrita e algumas pessoas as tratam apenas como hashtags. Ainda acredito em manter as permissões para tags abertas, mas seria bom poder podar o jardim com mais facilidade periodicamente.

Adoraria encontrar maneiras de incentivar as pessoas a considerar as tags como um meio de “agrupar” tópicos relacionados e a criar tags apenas quando acharem (ou souberem!) que serão usadas mais de uma vez.

Mas, enquanto isso, acho que estender a funcionalidade existente para permitir “excluir tags usadas por menos de __ tópicos” poderia ser uma melhoria interessante que usaríamos.

4 curtidas

Ainda mais sofisticado, eu poderia imaginar uma configuração que varresse automaticamente as tags e as excluísse com base nos seguintes critérios:

count < N && topic_last_updated > X meses atrás

Basicamente, você permite que as tags tenham uma chance de se estabelecer. Sua vida é renovada se novos tópicos forem publicados antes de algum tempo limite. Mas se nenhum novo tópico foi publicado há mais de, digamos, 3 meses, e a tag tiver menos de 5 tópicos, então basta eliminá-la.

6 curtidas

Eu também acho que essas são boas sugestões para melhorar a função de limpeza de tags, @neil

2 curtidas

Eu também nunca vi esse botão, e concordo que um recurso de limpeza automática seria útil. Ele também deve ter cuidado para não excluir tags que são exclusivas da equipe. Provavelmente existem outros casos em que algumas tags não devem ser excluídas automaticamente.

2 curtidas

Enquanto isso, aqui está uma consulta #plugin:data-explorer que pode ajudar as pessoas a identificar tags candidatas para exclusão:

-- [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 curtidas

Peço desculpas pelo bump,

Sim, isso é muito necessário, pois algumas pessoas no meu fórum acharam engraçado brincar e postar, digamos, tags ‘interessantes’ não apropriadas para todas as idades. Por isso, gostaria de ver esse tipo de recurso.

Obrigado.

1 curtida

Então, como executá-lo para excluir se tópicos = 1?

Porque o limpador padrão só exclui tags sem tópicos. Estamos educando nossa equipe e limitei a criação de novas.