J’ai une catégorie contenant de nombreux sujets (plus de 900), tous ayant le même tag, disons answered, que nous utilisons pour suivre les posts qui ont reçu une réponse.
Beaucoup contiennent également d’autres tags : deployment, cli, api, etc., pour désigner le « thème » de la question.
Comment puis-je trouver tous les sujets de ma catégorie qui n’ont que le tag answered, mais aucun des autres ?
J’ai essayé la syntaxe suivante, par exemple tags:answered -tags:redirects, qui lors de la recherche me donne bien tous les éléments avec le tag answered mais PAS ceux avec le tag redirects.
Mais pour appliquer cela à ma situation, je devrais lister individuellement tous les tags à NE PAS trouver — et j’en ai beaucoup.
Existe-t-il un moyen d’utiliser des caractères génériques dans les recherches de tags ? Quelque chose comme : tags:answered -tags: * ?
Si non, existe-t-il une autre méthode pour obtenir une liste des éléments qui ont UNIQUEMENT le tag answered et aucun autre ?
C’est la seule méthode que je vois pour exclure des tags d’une recherche.
Il est possible de rechercher des groupes de tags en utilisant le modificateur de catégorie avec l’identifiant (slug) du groupe de tags. Par exemple, si vous aviez un groupe de tags appelé « topic status », vous pouvez rechercher ses tags avec #topic-status, mais il n’est pas possible d’exclure des tags de cette manière ; ainsi, -#topic-status ne fonctionne pas.
Désolé, je n’ai pas été aussi clair que j’aurais pu l’être. S’il était possible d’exclure un groupe de tags des recherches, cette approche fonctionnerait, mais je ne vois aucun moyen d’exclure un groupe de tags des résultats de recherche.
Vous pouvez obtenir une liste de sujets comportant un seul tag donné en utilisant une requête Data Explorer. Voici un exemple qui pourrait fonctionner pour vous :
--[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