यदि आपको परिष्कृत खोज सुविधाओं की आवश्यकता है, तो पूर्ण-पाठ खोज समाधान का उपयोग करें।
MySQL में, बिल्टिन पूर्ण टेक्स्ट सर्च इंडेक्स फीचर केवल MyISAM स्टोरेज इंजन में काम करता है। यह दुर्भाग्यपूर्ण है, क्योंकि InnoDB सभी MySQL तालिकाओं के लिए बेहतर स्टोरेज इंजन है। MySQL के हाल के संस्करणों में InnoDB ज्यादातर मामलों में MyISAM की तुलना में तेज़ है, और इसमें MyISAM की तुलना में बेहतर क्रैश रिकवरी सुविधाएँ हैं।
MySQL देव टीम की ओर से बयान दिए गए हैं कि वे InnoDB के लिए एक फुलटेक्स्ट इंडेक्स को लागू करने का इरादा रखते हैं। लेकिन हम इसे उपलब्ध होने से कई महीने या साल दूर हैं, और निश्चित रूप से इसे MySQL के कुछ बाद के संस्करण में अपग्रेड करने की आवश्यकता होगी।
यदि आपको MyISAM पूर्ण पाठ अनुक्रमणिका का उपयोग करना चाहिए, तो मेरा सुझाव है कि आप अपने डेटा को मुख्य रूप से InnoDB में संग्रहीत करें, और फिर MyISAM तालिका में खोजने योग्य पाठ की एक प्रति संग्रहीत करें।
आप Sphinx Search जैसे बाहरी समाधान का भी उपयोग कर सकते हैं या अपाचे सोलर डेटाबेस को बाह्य रूप से पूर्ण पाठ खोज क्षमता प्रदान करने के लिए। MySQL प्लगेबल स्टोरेज इंजन इंटरफेस के माध्यम से Sphinx सर्च इंडेक्स का उपयोग करने का एक तरीका भी है ।
मुझे LIKE
का उपयोग करना पसंद नहीं है वाइल्डकार्ड या REGEXP
. के साथ पूर्ण पाठ खोजों के लिए। इन समाधानों में प्रत्येक खोज के लिए पूर्ण तालिका स्कैन होता है, और आपके डेटा की मात्रा के आधार पर, यदि आपके पास कोई अनुक्रमणिका है तो सैकड़ों या हजारों गुना धीमी गति से चलती है।
मैंने अपनी प्रस्तुति में MySQL के लिए पूर्ण पाठ खोज समाधानों की तुलना लिखी, "MySQL में व्यावहारिक पूर्ण-पाठ खोज ," और मेरी पुस्तक के एक अध्याय में भी ।
अद्यतन:MySQL 5.6 वर्तमान में विकास में है (फरवरी 2012 तक), और InnoDB के लिए एक पूर्ण पाठ अनुक्रमणिका समाधान लागू करता है।