我有以下情况:
我有一个包含许多主题(900+)的分类,所有这些主题都带有相同的标签,例如 answered,我们用它来追踪已得到回复的帖子。
许多主题还包含其他标签:deployment、cli、api 等,用以表示问题的“主题”。
我该如何找到我的分类中仅带有 answered 标签而不带其他任何标签的所有主题?
我曾尝试过以下语法,例如 tags:answered -tags:redirects,搜索确实会返回所有带有 answered 标签但不包含 redirects 标签的内容。
但要应用于我的情况,我就必须逐一列出所有不要查找的标签——而我的标签数量很多。
是否可以在标签搜索中使用通配符?例如:tags:answered -tags: *?
如果不能,是否有其他方法可以获取仅带有 answered 标签而不带其他任何标签的列表?
感谢您的建议。
据我所知,这是从搜索中排除标签的唯一方法。
您可以使用分类修饰符配合标签组的 slug 来搜索“标签组”。例如,如果您有一个名为“主题状态”的标签组,可以使用 #topic-status 搜索其标签,但无法以此方式排除标签,因此 -#topic-status 不起作用。
1 個讚
谢谢 @simon —— 我想我会按照建议,将所有不想搜索的标签添加到一个标签组中,然后试试看 
抱歉,我之前的表达不够清楚。如果可以排除某个标签组进行搜索,这个方法就会奏效,但我看不出有任何方法可以从搜索结果中_排除_某个标签组。
2 個讚
您可以通过数据探索器查询获取仅包含单个特定标签的主题列表。类似下面的查询可能适用于您:
--[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 個讚