Tags génériques dans les recherches : trouver des sujets sans certains tags ?

J’ai la situation suivante :

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 ?

Merci pour vos réflexions à ce sujet.

This is the only way I can see of excluding tags from a search.

It is possible to search for tag groups by using the category modifier with the tag group’s slug. For example, if you had a tag group called ‘topic status’, you can search for its tags with #topic-status, but tags can’t be excluded in this way, so -#topic-status doesn’t work.

1 « J'aime »

Thanks @simon - I think I’ll try adding all the tags I don’t want to search for to a tag group as suggested, and try that :muscle:

Sorry, I wasn’t as clear as I could have been. If it was possible to exclude a tag group from search, this approach would work, but I can’t see any way to exclude a tag group from search results.

2 « J'aime »

oh, i misunderstood. So its not possible - at all?

You could get a list of topics that only have a single given tag with a Data Explorer query. Something like this might work for you:

--[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
1 « J'aime »