यह एक समस्या है जो मुझे सही करने के तरीके के बारे में सोचने के लिए और अधिक समय खो गया है, जो करने के लिए सबसे अच्छा अनुकूलित तरीका सोच रहा है।"हैशटैग" सिस्टम बनाने के लिए सबसे अच्छा तरीका
मेरे पास एक टेबल "सामग्री" है, और सामग्री में कई "हैशटैग" या "टैग" या "कीवर्ड" को जोड़ने के लिए विकल्प जोड़ने की आवश्यकता है, उदाहरण के लिए, "केचप के साथ तला हुआ पॉटेटोस" जैसी सामग्री में है "चाबियाँ": "आलू", "केचप" और "तला हुआ"।
और जब मैं एक शब्द से खोज करता हूं, उदाहरण के लिए "आलू", मुझे उस सामग्री को दिखाने की ज़रूरत है जो इसमें है।
सवाल यह है कि, परिणामों की गति में सोचने के लिए यह सबसे अच्छी संरचना क्या है क्योंकि सामग्री तालिका 30 मिलियन पंक्तियों से अधिक मायिसैम मिथ है।
मैं इस में लगता है:
2 से अधिक टेबल बनाएं "contents_hashtags" (id(INT11), content_id(INT11), hashtag_id(INT11))
और "हैशटैग" (id(INT11), hashtag(VARCHAR(40)))
2 InnoDB
जब उपयोगकर्ता बनाने/तालिका सामग्री को संशोधित में टेबल, मैं खोज हैशटैग टेबल और आईडी प्राप्त करें, यदि कोई हैशटैग मौजूद नहीं है, तो इसे मौजूद हैशटैग में बनाएं, यदि मौजूद है, तो आईडी प्राप्त करें, इस सामग्री का उपयोग करके सामग्री प्राप्त करें सामग्री सामग्री को सम्मिलित करें सामग्री 0h-contents_hashtas-> हैशटाह
खोज में, जॉइन (LEFT/दाएं/अंदरूनी दोस्त ..) और पसंद करके एक खोज करें ?? सटीक (हैशटैग = "XXX") या पूर्ण पाठ खोज द्वारा?
क्या यह विधि सही/तेज है? मुझे पता है कि एक बड़ा पंक्ति में गिना जाता है और बड़े यातायात के साथ इस चलाने के न ..
क्या तरीकों खोज में उपवास कर रहे हैं? 3 टेबल या 2 टेबल विधि? 3 टेबल विधि में जॉइन द्वारा सीधा संबंध है, लेकिन 2 टेबल विधि में हैशटैग सामग्री के लिए "डुप्लिकेट" है (क्योंकि आईडी + हैशटैग दोहराना नहीं है)। अगर मैं उदाहरण के लिए खोज करता हूं: content.active = 1 और (content.name = 'xxx' या (Contags.hashtag = 'XXX' और Content.id = Contags।content_id)) – Zenth
"वैकल्पिक रूप से, हैशटैग नाम और सामग्री आईडी को अद्वितीय कुंजी के रूप में सेट करें" के लिए उपरोक्त। 3 टेबल 2 की आवश्यकता नहीं होगी। – DeepBlue