सभी टैग अलग-अलग रिकॉर्ड (सामान्यीकृत) में होने का मतलब है कि आप टैग का नाम बदलने में सक्षम होंगे और आवश्यकता पड़ने पर टैग नाम इतिहास को ट्रैक कर पाएंगे।
SO
, उदाहरण के लिए, नाम बदलकर SQL Server
संबंधित टैग कम से कम तीन बार (mssql
-> sqlserver
-> sql-server
)।
सभी टैग्स को एक रिकॉर्ड में रखने का मतलब है कि आप इस कॉलम को FULLTEXT
के साथ इंडेक्स कर सकते हैं। एक साथ दो या दो से अधिक टैग वाली पोस्ट को इंडेक्स और सर्च करें:
SELECT *
FROM posts
WHERE MATCH(tags) AGAINST('+mma +ufc')
जो संभव भी है लेकिन सामान्यीकृत डिजाइन के साथ कम कुशल है।
(@ft_min_word_len
. को एडजस्ट करना न भूलें 3
. के टैग को इंडेक्स करने के लिए काम करने के लिए वर्ण या उससे कम)
आप दोनों डिज़ाइनों को जोड़ सकते हैं:मैप टेबल और डीनॉर्मलाइज़्ड कॉलम दोनों को स्टोर करें। हालांकि, इसके लिए अधिक रखरखाव की आवश्यकता होगी।
आप सामान्यीकृत डिज़ाइन को अपने डेटाबेस में भी संग्रहीत कर सकते हैं और टैग को Sphinx
पर फ़ीड करने के लिए आपके द्वारा प्रदान की गई क्वेरी का उपयोग कर सकते हैं या Lucene
।
इस तरह, आप MySQL
. के साथ इतिहास की खुदाई कर सकते हैं , पूर्ण टेक्स्ट टैग Sphinx
. का उपयोग करके खोज करता है , और किसी अतिरिक्त रखरखाव की आवश्यकता नहीं होगी।