Tengo una categoría que contiene muchos temas (900+), todos los cuales tienen la misma etiqueta, digamos respondido, que utilizamos para rastrear las publicaciones que han sido contestadas.
Muchos también contienen otras etiquetas: despliegue, cli, api, y así sucesivamente, para denotar el “tema” de la pregunta.
¿Cómo puedo encontrar todos los temas en mi categoría que solo tienen la etiqueta respondido, pero ninguna de las otras?
He probado la siguiente sintaxis, por ejemplo tags:respondido -tags:redirecciones, y al buscar efectivamente me muestra todas las cosas con la etiqueta respondido pero NO las que tienen la etiqueta redirecciones.
Pero para aplicar esto a mi situación tendría que listar todas las etiquetas que NO quiero encontrar individualmente, y tengo muchas.
¿Existe alguna forma de usar comodines en las búsquedas de etiquetas? ¿Algo como: tags:respondido -tags: *?
Si no, ¿hay otra forma de obtener una lista de cosas que SOLO tengan la etiqueta respondido pero ninguna de las otras?
Esta es la única forma que veo de excluir etiquetas de una búsqueda.
Es posible buscar grupos de etiquetas usando el modificador de categoría con el identificador (slug) del grupo de etiquetas. Por ejemplo, si tienes un grupo de etiquetas llamado “estado del tema”, puedes buscar sus etiquetas con #estado-tema, pero las etiquetas no se pueden excluir de esta manera, por lo que -#estado-tema no funciona.
Lo siento, no fui tan claro como podría haber sido. Si fuera posible excluir un grupo de etiquetas de la búsqueda, este enfoque funcionaría, pero no veo ninguna forma de excluir un grupo de etiquetas de los resultados de búsqueda.
Podrías obtener una lista de temas que tengan solo una etiqueta específica mediante una consulta del Explorador de Datos. Algo como esto podría funcionar para ti:
--[params]
-- string :tag_name
with tagged_topics AS (
SELECT
topic_id
FROM topic_tags
JOIN tags
ON tags.id = topic_tags.tag_id
WHERE tags.name = :tag_name
),
counts AS (
SELECT
COUNT(id) AS tag_count,
tagged_topics.topic_id
FROM topic_tags
JOIN tagged_topics
ON tagged_topics.topic_id = topic_tags.topic_id
GROUP BY tagged_topics.topic_id
)
SELECT
c.topic_id
FROM counts c
JOIN topics t
ON t.id = c.topic_id
WHERE t.deleted_at IS NULL
AND t.archetype = 'regular'
AND c.tag_count = 1