Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

क्या पूर्ण पाठ खोज का उत्तर है?

'%कीवर्ड%' प्रकार की खोज के साथ समस्या यह है कि नियमित तालिका में इसे कुशलता से खोजने का कोई तरीका नहीं है, भले ही आप उस कॉलम पर एक इंडेक्स बनाते हों। इस बारे में सोचें कि आप फोन बुक में उस स्ट्रिंग को कैसे देखेंगे। वास्तव में इसे अनुकूलित करने का कोई तरीका नहीं है - आपको पूरी फोन बुक स्कैन करनी होगी - और यही MySQL करता है, एक पूर्ण टेबल स्कैन।

यदि आप उस खोज को 'कीवर्ड%' में बदलते हैं और एक अनुक्रमणिका का उपयोग करते हैं, तो आप बहुत तेज़ खोज प्राप्त कर सकते हैं। हालांकि, ऐसा लगता है कि यह वह नहीं है जो आप चाहते हैं।

तो इस बात को ध्यान में रखते हुए, मैंने फुलटेक्स्ट इंडेक्सिंग/खोज का काफी उपयोग किया है, और यहां कुछ फायदे और नुकसान हैं:

पेशेवरों

  • बहुत तेज़
  • प्रासंगिकता के आधार पर क्रमबद्ध परिणाम लौटाता है (डिफ़ॉल्ट रूप से, हालांकि आप किसी भी छँटाई का उपयोग कर सकते हैं)
  • स्टॉप शब्दों का इस्तेमाल किया जा सकता है।

विपक्ष

  • केवल MyISAM तालिकाओं के साथ काम करता है
  • जो शब्द बहुत छोटे हैं उन्हें अनदेखा कर दिया जाता है (डिफ़ॉल्ट न्यूनतम 4 अक्षर है)
  • कहां खंड में अलग SQL की आवश्यकता है, इसलिए आपको मौजूदा प्रश्नों को संशोधित करने की आवश्यकता होगी।
  • आंशिक स्ट्रिंग से मेल नहीं खाता (उदाहरण के लिए, 'शब्द' 'कीवर्ड' से मेल नहीं खाता, केवल 'शब्द')

यहां पूर्ण-पाठ खोज पर कुछ अच्छे दस्तावेज़ दिए गए हैं

एक अन्य विकल्प खोज प्रणाली का उपयोग करना है जैसे Sphinx . यह बेहद तेज और लचीला हो सकता है। इसे खोजने के लिए अनुकूलित किया गया है और MySQL के साथ अच्छी तरह से एकीकृत किया गया है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql विशिष्ट कॉलम में UNSIGNED विशेषता को संशोधित करता है

  2. डेटाबेस में PHP सेविंग सत्र। पढ़ने की विधि काम नहीं कर रही है

  3. सी . में एसक्यूएल इंजेक्शन को रोकना

  4. एकल SQL तालिका पर कुल गणना क्वेरी

  5. SQL पिछले 2 वर्णों को बदलें यदि अंतिम 2 वर्ण मेल खाते हैं