¿Existe un límite para la cantidad de etiquetas que puede tener una categoría o comunidad?
¿Temas o etiquetas? En ambos casos, nunca deberías alcanzar un límite.
Me refiero a etiquetas.
Estoy trabajando en un diseño de foro que elimina las subcategorías (porque llegamos a miles y las búsquedas y la suscripción a categorías específicas se volvían muy lentas), y traslada todo eso a etiquetas. Las etiquetas estarán restringidas a categorías, pero el número total de ellas superará las 1000, y eventualmente será aún mayor. ¿Se espera que esto tenga un mejor rendimiento que las subcategorías?
Además, ¿puedo suscribirme a nuevos temas/publicaciones en una etiqueta?
Sí, absolutamente. Las etiquetas son extremadamente ligeras en comparación con las categorías o subcategorías.
¡Sí puedes! Al final de la guía hay un enlace a https://meta.discourse.org/t/how-do-i-set-tag-tracking-level-defaults-historically/111371/1 donde puedes establecer etiquetas vigiladas predeterminadas para todos tus usuarios. También pueden ser ajustadas por usuarios individuales cuando ven la lista de temas de una etiqueta, o a través de sus preferencias de usuario (/my/preferences/tags).
Gracias por tus respuestas. ¡Realmente útiles!
Una cosa más sobre la que necesito aclaración:
¿Puedo usar la API de administración para crear una nueva etiqueta? No veo esa opción en la API de etiquetas; solo me permite crear/actualizar nuevos grupos de etiquetas.
Mi segunda idea fue crear un nuevo tema y agregar mis etiquetas deseadas a través de la API, pero las opciones disponibles en la documentación no incluyen un campo tags.
Estas son mis opciones:
Por qué necesito esto:
Estoy intentando probar cómo funcionará mi sistema si tengo 5000 etiquetas.
También necesitaré esto eventualmente si migró mis temas de subcategorías a etiquetas. Necesitaré crear esas etiquetas primero.
Al intentar enviar una solicitud para crear un grupo de etiquetas con nuevos nombres de etiquetas, estoy probando lo siguiente:
# Python
payload = {
'api_key': constants.DISCOURSE_RAILS_API_KEY,
'api_username': constants.DISCOURSE_RAILS_API_USERNAME,
'name': 'new-tag-group',
'tag_names': ['new_tag1', 'new_tag2']
}
Esto crea correctamente el nuevo grupo de etiquetas, pero la respuesta no incluye las etiquetas en el array tag_names:
'_content': '{"tag_group":{"id":6,"name":"new-tag-group","tag_names":[]"}'
Sin embargo, cuando intento hacer esto a través del panel de administración y examino la llamada de red, se envían de manera similar:

¿Estoy haciendo algo mal en la solicitud?
Las etiquetas se crean al aplicarse por primera vez, por lo que necesitarás crear al menos un tema con la nueva etiqueta para que esté disponible. Creo que este es un caso donde la documentación de la API no incluye todas las opciones posibles. Si planeas trabajar con la API, te recomiendo consultar Reverse engineer the Discourse API
Si creas un tema con una nueva etiqueta a través de la interfaz de usuario y revisas las solicitudes XHR en las herramientas de desarrollo de tu navegador, deberías ver algo como esto (observa el array de etiquetas):
Una vez que tengas la etiqueta creada, deberías poder usar un método como Etiquetar en masa todos los temas dentro de una categoría y luego Mover todos los temas de una categoría a otra para lograr lo que buscas.
Recuerda hacer una copia de seguridad primero antes de ejecutar tareas rake como esas ![]()
¡Gracias por la ayuda, Taylor! Por suerte, ya lo había resuelto justo después de mi último comentario.
Logré esto usando la API de creación de grupos de etiquetas.
El problema es que (como se ve en la foto) la clave JSON esperada es tag_names[] y no tag_names.
Sin embargo, en la documentación de la API en Discourse API Docs, se indica tag_names. ¿Debería actualizarse para mayor claridad?
¡No hay problema! Me alegra que hayas podido resolverlo. Dado que todo esto podría ser útil para alguien en el futuro, lo he movido a un nuevo tema (si se hubiera quedado en el tema de cómo hacerlo, se habría eliminado automáticamente).
Sin duda parece que sí. @blake podría opinar cuando tenga oportunidad.
¡Sí! Probablemente necesite actualizarse. Lo he añadido a mi lista.
Hola Taylor, otra consulta para orientación:
Veo estos enlaces sobre operaciones masivas, pero no estoy seguro de cómo administrarlas en el entorno de producción.
No tendría acceso a la instancia que ejecuta y aloja Discourse, pero necesito escribir scripts, probarlos en una instancia de staging y luego entregarlos a producción para que se ejecuten.
¿Cómo se logra esto? Veo temas sobre db:migrate, etc., pero no está claro.
¿Podrías indicarme el camino correcto?
Estos son los pasos que quiero seguir:
- Crear una nueva categoría.
- Etiquetar todos los temas en las categorías existentes con una etiqueta con el mismo nombre que la categoría.
- Mover todos los temas a la nueva categoría.
- Eliminar todas las categorías antiguas.
- Crear grupos de etiquetas a partir de estas etiquetas recién formadas.
- Restringir estos grupos de etiquetas a la nueva categoría.
- Editar algunos ajustes de categoría para esta nueva categoría.
Ya he descubierto cómo hacer todo esto a través de la API. Incluso ya he escrito el código para ello.
Solo me pregunto si sería más eficiente hacerlo con migraciones.
Hmm, necesitarías tener acceso a la consola para ejecutar cualquiera de los scripts o tareas de operaciones masivas. En nuestro alojamiento, nos complace ejecutar scripts o tareas de operaciones masivas puntuales para los clientes, así que te sugiero que contactes a tu proveedor de alojamiento y veas si pueden encargarse de ello por ti.
En mi opinión, así es como manejaría tus pasos:
- Es bastante fácil hacerlo desde la interfaz de usuario.
- Etiquetar masivamente todos los temas dentro de una categoría
- Mover todos los temas de una categoría a otra
- Ya sea a través de la interfaz de usuario o con
rake destroy:categories[10,11,12,18,30] - Probablemente lo más fácil sea a través de la interfaz de usuario.
- Interfaz de usuario.
- Interfaz de usuario.
No debería ser necesario hacer nada con db:migrate. Si tu proveedor de alojamiento puede ejecutar las tareas de operaciones masivas necesarias, eso sería más eficiente que usar la API.
Primero verifica si tu proveedor de alojamiento ejecutará la tarea y luego decide qué hacer a partir de ahí.
Gracias por la rápida respuesta.
Sí, hay personas en el equipo que tienen acceso al entorno de hosting de producción.
¿Podrías indicarme por dónde empezar para aprender a escribir estos scripts de Rake y cómo ejecutarlos?
Toda la información que necesitas debería estar incluida en los enlaces que publiqué arriba
Ya están escritos; solo necesitas proporcionar los parámetros, los cuales se explican en las secciones relevantes del tema Administrative Bulk Operations. Revisa la parte superior del tema para las instrucciones iniciales.

