2011-08-30 14 views
10

I asked this question on meta, लेकिन अब मुझे एहसास है कि यह मुख्य साइट के लिए अधिक उपयुक्त हो सकता है क्योंकि यह एक सामान्य प्रश्न है जो किसी भी टैगिंग आधारित सिस्टम से संबंधित होगा (मुझे इस बात पर निर्भर करता है कि लोग इस प्रश्न को कहां रखते हैं जाना)टैग और टैग समानार्थी शब्द के लिए उपयोग किया जाने वाला डेटा मॉडल क्या है?


मैं टैग किए गए डेटा की एक ऐसी ही प्रणाली है और के रूप में SOF किया मैं एक ही समस्या में चल रहा मैं, जहां टैग कि वास्तव में एक ही बात कर रहे हैं के बहुत सारे है। मैं इस जानकारी को व्यवस्थित करने के समर्थन के लिए एसओएफ के समान टैग समानार्थी पृष्ठ बनाने की कोशिश कर रहा हूं।

रिश्ते और टैग समानार्थी शब्द "डाटा मॉडल" के चारों ओर एक कुछ सवाल:

मुझे लगता है एक मास्टर टैग कई पर्याय टैग नहीं है सकते हैं, लेकिन एक पर्याय टैग केवल एक मास्टर टैग के लिए एक पर्याय हो सकता है। क्या वो सही है?

इसके अलावा, क्या एक मास्टर टैग भी समानार्थी टैग हो सकता है? उदाहरण के लिए, की मदद से आप एक टैग बुलाया है का कहना है कि जावास्क्रिप्ट और आप था:

मास्टर: js
समानार्थी: जावास्क्रिप्ट, जे एस-वेब

आप भी हो सकते हैं:

मास्टर: जावास्क्रिप्ट
समानार्थी: js

तो ऊपर दिए गए उदाहरण में, आप अंततः जेएस-वेब से जावास्क्रिप्ट को हल करने का संकल्प जारी रखेंगे क्योंकि मास्टर टैग: जेएस स्वयं एक समानार्थी टैग है।

इसके अलावा

, मुझे लगता है कि आप भी एक परिपत्र संदर्भ करना पड़ सकता है जहाँ आप एक

मास्टर है कि बनाता है: js
समानार्थी: जावा स्क्रिप्ट

और

मास्टर: जावास्क्रिप्ट
समानार्थी शब्द: जेएस

सिस्टम सर्कुलर रिफ्रेंस से कैसे निपटता है?

+0

Schemaless NoSQL डीबी इस डेटा मॉडल के मुद्दों के साथ लचीला हैं। Mongodb.org देखें – InspiredJW

+0

लूप और चेन एक प्रकार की मुश्किल हैं ... यह करने के लिए सबसे आसान बात पूरी तरह से लूप और चेन को पूरी तरह से अस्वीकार कर रही है ... –

उत्तर

15

यह लोकगीतों, polysemy और इस तरह से मेटा पर एक और सैद्धांतिक उत्तर देने के लिए आकर्षक है! चूंकि मैं स्टैक ओवरफ्लो पक्ष पर जवाब दे रहा हूं, इसलिए मैं कोशिश करता हूं और थोड़ा सा तकनीकी उत्तर देता हूं। StackOverflow Data Explorer का उपयोग कर चलने वाले प्रश्न मुझे आपके प्रश्नों का उत्तर देने का प्रयास करने की अनुमति देंगे (मैं स्टैक ओवरफ्लो से संबद्ध नहीं हूं इसलिए मैं निश्चित रूप से नहीं जान सकता)।

स्टैक ओवरव्लो पर मास्टर/समानार्थी टैग संबंध सावधानी से stewarded और खेती की जाती है।डेटा एक्सप्लोरर से लिखने के समय:

  • टैग 29488 पंक्तियों
  • TagSynonyms 1916 पंक्तियों

यह अन्य folksonomies के साथ इस विपरीत दिलचस्प है, एक लेख "Technorati tags: Good idea, terrible implementation" राज्यों है।

"Technorati का विज्ञापन करता है कि वे अब 466,951 अलग टैग, जो सुंदर रफ़ू प्रभावशाली है जब आप समझते हैं कि एक विशिष्ट शब्दकोश चारों ओर 75,000 प्रविष्टियां हैं ट्रैक कर रहे हैं"

एक त्वरित चेतावनी, मैं आमतौर पर Oracle SQL लिख सकते हैं और मुझे लगता है कि डेटा एक्सप्लोरर SQLServer का उपयोग कर रहा है, इसलिए मेरे प्रश्न थोड़ा शौकिया हो सकते हैं। सबसे पहले डेटा के बारे में मेरी धारणा:

  • टैग तालिका में सूचीबद्ध कुछ भी "मास्टर टैग" है।
  • टैगसिनोनीम तालिका में, TargetTagName एक "मास्टर टैग" है, SourceTagName "समानार्थी टैग" है।

अब अपने विशिष्ट प्रश्नों का:

"। मुझे लगता है एक मास्टर टैग कई पर्याय टैग नहीं है सकते हैं, लेकिन एक पर्याय टैग केवल एक मास्टर टैग के लिए एक पर्याय हो सकता है कि वह सही है?"

select * from TagSynonyms where TargetTagName = 'javascript' 

परिणाम: हां। एक मास्टर टैग में एकाधिक समानार्थी टैग हो सकते हैं।

select SourceTagName, count(*) from TagSynonyms group by SourceTagName having count(*) > 1 

परिणाम: हां। समानार्थी टैग केवल एक मास्टर टैग के लिए समानार्थी हो सकता है।

"साथ ही, क्या एक मास्टर टैग भी समानार्थी टैग हो सकता है?"

select TagName from Tags 
intersect 
select SourceTagName from TagSynonyms 

परिणाम: हां। एक मास्टर टैग भी समानार्थी टैग हो सकता है। जब मैंने यह प्रश्न चलाया तो 465 टैग थे जो समानार्थी और मास्टर दोनों थे

"सिस्टम परिपत्र संदर्भों से कैसे निपटता है?"

यह वह जगह है जहां मेरा तर्क/एसक्यूएल मुझे छोड़ सकता है। सवाल यह है कि क्या मुझे कोई परिपत्र संदर्भ मिल सकता है? ऐसा करने के लिए मुझे लगता है कि मैं बाहर काम करने की जरूरत: सेट

  • एक एक
  • सेट ग सेट में टैग की समानार्थक शब्द के लिए समानार्थी शब्द - - टैग है कि दोनों गुरु और पर्याय
  • सेट ख का सेट - एक चौराहे बी

सेट सी में कुछ भी एक परिपत्र संदर्भ होगा।

हमने पहले से ही ऊपर सेट की गणना की है (इसमें 465 पंक्तियां हैं)।

सेट ख - एक

select SourceTagName from TagSynonyms where TargetTagName in (
select SourceTagName from TagSynonyms where TargetTagName in (
select TagName from Tags 
intersect 
select SourceTagName from TagSynonyms 
)) 

परिणाम सेट के समानार्थी शब्दों के लिए समानार्थी शब्द: 0 पंक्तियों

हम यहाँ बंद कर सकते हैं, वहाँ कोई सेट ग बाहर काम कर के रूप में हम पहले से ही जानते ख सेट बिंदु है खाली है।

जब तक मुझे अपना तर्क या एसक्यूएल गलत नहीं मिला (जो बहुत संभव है) ऐसा लगता है कि स्टैक ओवरफ्लो में कोई परिपत्र संदर्भ नहीं हैं। मैं कल्पना करता हूं कि परिपत्र संदर्भों को होने से रोकने के लिए तकनीकी प्रक्रियाएं हैं (अन्यथा स्टैक ओवरव्लो स्टैक ओवरफ्लो को भुगत सकता है!)।

संबंधित मुद्दे