검색에서 와일드카드 태그 사용 - 특정 태그가 없는 주제 찾기?

다음과 같은 상황을 겪고 있습니다:

많은 주제(900개 이상)가 포함된 카테고리가 있습니다. 이 주제들은 모두 answered라는 동일한 태그를 가지고 있으며, 우리는 이 태그를 답변이 달린 게시물을 추적하는 데 사용합니다.

많은 주제에는 질문의 '주제’를 나타내는 deployment, cli, api 등의 다른 태그들도 포함되어 있습니다.

카테고리 내에서 answered 태그만 있고 다른 태그는 없는 모든 주제를 어떻게 찾을 수 있을까요?

예를 들어 tags:answered -tags:redirects와 같은 구문을 시도해 보았습니다. 검색을 하면 실제로는 answered 태그가 있는 모든 항목을 가져오지만, redirects 태그가 있는 항목은 제외됩니다.

하지만 제 상황에 이를 적용하려면 제외할 모든 태그를 개별적으로 나열해야 합니다. 그리고 제 태그는 매우 많습니다.

태그 검색에서 와일드카드를 사용할 수 있는 방법이 있을까요? 예를 들어 tags:answered -tags: *와 같은 방식으로요?

만약 그렇지 않다면, answered 태그만 있고 다른 태그는 없는 항목 목록을 얻을 수 있는 다른 방법이 있을까요?

이 문제에 대한 여러분의 의견을 기다립니다.

검색에서 태그를 제외할 수 있는 유일한 방법은 이 방식뿐입니다.

태그 그룹의 슬러그를 사용하여 카테고리 수정자를 적용하면 _태그 그룹_을 검색할 수 있습니다. 예를 들어 'topic status’라는 이름의 태그 그룹이 있다면 #topic-status를 사용하여 해당 태그를 검색할 수 있습니다. 그러나 이 방식으로는 태그를 제외할 수 없으므로 -#topic-status는 작동하지 않습니다.

1개의 좋아요

@simon 감사합니다 - 제안해 주신 대로 검색하고 싶지 않은 태그들을 모두 태그 그룹에 추가해 보고, 그렇게 시도해 볼게요 :muscle:

죄송합니다, 더 명확하게 설명하지 못했습니다. 태그 그룹을 검색에서 제외할 수 있다면 이 방식이 작동할 것인데, 검색 결과에서 태그 그룹을 _제외_하는 방법을 찾을 수 없습니다.

2개의 좋아요

아, 제가 오해했네요. 그러면 아예 불가능한 건가요?

Data Explorer 쿼리를 사용하여 특정 태그가 하나만 있는 주제 목록을 가져올 수 있습니다. 다음과 같은 쿼리가 도움이 될 수 있습니다:

--[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개의 좋아요