Capacidad para eliminar etiquetas con < N temas

Acabo de descubrir esta maravillosa función: «eliminar etiquetas no utilizadas». ¡Y me dejó con ganas de más!

Continuando la discusión desde Una guía completa sobre las etiquetas de Discourse:

Tenemos muchas etiquetas con «recuento: 1», ya que la creación de etiquetas no está en absoluto restringida y algunas personas las tratan simplemente como hashtags. Todavía creo en mantener los permisos abiertos para las etiquetas, pero sería agradable poder desbrozar el jardín con más facilidad de forma periódica.

Me encantaría encontrar formas de animar a las personas a considerar las etiquetas como un medio para «agrupar» temas relacionados y crearlas solo cuando piensen (¡o sepan!) que se utilizarán más de una vez.

Pero mientras tanto, creo que ampliar la función existente para permitir «eliminar etiquetas utilizadas por menos de __ temas» podría ser una mejora agradable que usaríamos.

4 Me gusta

Aún más sofisticado, podría imaginar una configuración que elimine automáticamente las etiquetas y las borre según los siguientes criterios:

count < N && topic_last_updated > hace X meses

Básicamente, se les da a las etiquetas la oportunidad de asentarse. Su vida se renueva si se publican nuevos temas antes de que se agote un tiempo límite. Pero si no se han publicado nuevos temas durante más de, digamos, 3 meses, y la etiqueta tiene menos de 5 temas, simplemente elimínala.

6 Me gusta

También creo que son buenas sugerencias para mejorar la función de limpieza de etiquetas, @neil

2 Me gusta

Yo tampoco he visto nunca este botón, y estoy de acuerdo en que una función de limpieza automática sería útil. También debería tener cuidado de no eliminar etiquetas que son solo para el personal. Probablemente haya otros casos en los que algunas etiquetas no deberían eliminarse automáticamente.

2 Me gusta

Mientras tanto, aquí tienes una consulta de #plugin:data-explorer que puede ayudar a los usuarios a identificar etiquetas candidatas para su eliminación:

-- [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 Me gusta

Me disculpo por el revuelo,

Sí, esto es muy necesario, ya que algunas personas en mi foro decidieron que sería divertido bromear y publicar, digamos, etiquetas ‘interesantes’ que no son apropiadas para todas las edades. Por lo tanto, me gustaría ver este tipo de función.

Gracias.

1 me gusta

¿Cómo ejecutarlo para eliminar si temas = 1?

Porque el limpiador predeterminado solo elimina etiquetas sin temas. Estamos educando a nuestro personal y he limitado la creación de nuevas.