علامات النطاق الواسع في عمليات البحث - هل يمكن العثور على مواضيع بدون علامات معينة؟

لدي الموقف التالي:

لدي فئة تحتوي على العديد من المواضيع (أكثر من 900)، وجميعها تحمل نفس الوسم، لنقل answered، والذي نستخدمه لتتبع المنشورات التي تم الرد عليها.

كثير منها يحتوي أيضًا على وسوم أخرى: deployment, cli, api، وما إلى ذلك، لتحديد “موضوع” السؤال.

كيف يمكنني العثور على جميع المواضيع في فئتي التي تحتوي فقط على وسم answered، ولكن لا تحتوي على أي من الوسوم الأخرى؟

لقد جربت بناء جملة مثل tags:answered -tags:redirects أثناء البحث، وهو يعطيني بالفعل كل العناصر التي تحمل وسم answered ولكن ليس تلك التي تحمل وسم redirects.

ولكن لتطبيق هذا على وضعي، سأضطر إلى سرد جميع الوسوم التي لا أريد البحث عنها بشكل فردي - ولدي الكثير منها.

هل توجد طريقة لاستخدام أحرف البدل في بحث الوسوم؟ شيء مثل: tags:answered -tags: *؟

إذا لم يكن الأمر كذلك، فهل توجد طريقة أخرى للحصول على قائمة بالعناصر التي تحتوي فقط على وسم answered ولا تحتوي على أي من الوسوم الأخرى؟

شكرًا لكم على آرائكم.

هذه هي الطريقة الوحيدة التي أستطيع رؤيتها لاستبعاد العلامات من البحث.

من الممكن البحث عن مجموعات العلامات باستخدام معدّل الفئة مع الاسم المختصر (slug) لمجموعة العلامات. على سبيل المثال، إذا كان لديك مجموعة علامات تسمى ‘topic status’، يمكنك البحث عن علاماتها باستخدام #topic-status، لكن لا يمكن استبعاد العلامات بهذه الطريقة، لذا فإن -#topic-status لا تعمل.

إعجاب واحد (1)

شكرًا لك @simon - أعتقد أنني سأحاول إضافة جميع الوسوم التي لا أريد البحث عنها إلى مجموعة وسوم كما هو مقترح، وتجربة ذلك :muscle:

آسف، لم أكن واضحًا بقدر ما كان يمكن أن أكون. إذا كان من الممكن استبعاد مجموعة وسوم من البحث، لكانت هذه الطريقة تعمل، لكنني لا أستطيع رؤية أي طريقة لـ استبعاد مجموعة وسوم من نتائج البحث.

إعجابَين (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)