検索でのワイルドカードタグ:特定のタグを持たないトピックの検索は可能か?

以下のような状況です:

1 つのカテゴリに多数のトピック(900 件以上)があり、それらすべてに同じタグ(例:answered)が付いています。これは、返信された投稿を追跡するために使用しています。

また、多くのトピックには「質問のテーマ」を示すために、deploymentcliapi などの他のタグも付いています。

このカテゴリ内で、answered タグのみが付いていて、他のタグが一切付いていないトピックをすべて見つけるにはどうすればよいでしょうか?

例えば tags:answered -tags:redirects という構文で検索すると、answered タグは付いているが redirects タグが付いていないものがすべて取得できることを確認しました。

しかし、この方法を自分の状況に適用しようとすると、除外したいタグをすべて個別にリストアップする必要があり、タグの数も多いため現実的ではありません。

タグ検索でワイルドカードを使用することは可能でしょうか?例えば tags:answered -tags: * のような構文です。

もし不可能であれば、answered タグのみが付いていて他のタグが一切付いていないもののリストを取得する別の方法はありますか?

ご意見をお聞かせください。

検索からタグを除外できるのは、この方法だけだと考えられます。

カテゴリ修飾子を使ってタググループのスラッグを指定することで、タググループを検索することは可能です。たとえば、「topic status」という名前のタググループがある場合、#topic-status でそのグループ内のタグを検索できます。ただし、この方法ではタグを除外できないため、-#topic-status は機能しません。

「いいね!」 1

@simon さん、ありがとうございます!ご提案いただいたように、検索したくないすべてのタグをタググループに追加して試してみます :muscle:

すみません、私がもっと明確に説明できていませんでした。タググループを検索から除外できるのであれば、このアプローチは機能するでしょうが、検索結果からタググループを除外する方法がどうやら見当たらないようです。

「いいね!」 2

ああ、勘違いしていました。つまり、全く不可能ということですか?

Data Explorer クエリを使用すると、特定のタグが 1 つのみ付与されたトピックのリストを取得できます。以下のようなクエリが機能するかもしれません。

--[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