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

मैसकल, पीएचपी, कई शब्दों की खोज

इसे करने के दो तरीके हैं। पहला बल्कि स्पष्ट दृष्टिकोण है। मान लें कि आपके पास वे सभी शब्द हैं, जिन्हें $necessaryWords नामक सरणी में प्रकट होने की आवश्यकता है:

$sql = 'SELECT ... FROM ...'; // and so on
$sql .= ' WHERE 1';

foreach ($necessaryWords as $word)
    $sql .= ' AND concat(subject,body) LIKE "%' . $word . '%"'; //Quotes around string

हालांकि, %foo% . का उपयोग करते हुए बल्कि धीमा है, क्योंकि किसी भी अनुक्रमणिका का उपयोग नहीं किया जा सकता है, इसलिए इस क्वेरी के कारण बड़ी तालिकाओं और/या आवश्यक शब्दों की एक बड़ी संख्या के साथ प्रदर्शन संबंधी समस्याएं हो सकती हैं।

दूसरा तरीका होगा FULLTEXT subject . पर अनुक्रमणिका और body . आप पूर्ण पाठ का उपयोग कर सकते हैं MATCH IN BOOLEAN MODE इस तरह:

$sql = 'SELECT ... FROM ...'; // and so on
$sql .= ' WHERE MATCH(subject,body) AGAINST("';

foreach ($necessaryWords as $word)
    $sql .= ' +' . $word;
$sql .= '")';

ध्यान दें कि आपकी तालिका को MyISAM . का उपयोग करना चाहिए FULLTEXT . का उपयोग करने के लिए अनुक्रमणिका। अद्यतन:MySQL 5.6 के अनुसार , InnoDB FULLTEXT . का समर्थन करता है सूचकांक भी। मुझे लगता है कि यह प्रदर्शन के लिहाज से बेहतर विकल्प हो सकता है। बूलियन मोड में फ़ुलटेक्स्ट पर और दस्तावेज़ीकरण में पाया जा सकता है। मैनुअल



  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 डेटाबेस फ़ोल्डर को पुनर्स्थापित करें

  2. MySQL - केस बनाम आईएफ स्टेटमेंट बनाम आईएफ फ़ंक्शन

  3. मेरा डेटाबेस बैकअप स्क्रिप्ट php में काम क्यों नहीं कर रहा है?

  4. MySQL में संख्याओं को मुद्रा के रूप में कैसे प्रारूपित करें

  5. कमांड प्रॉम्प्ट का उपयोग करके एक mysql डेटाबेस कैसे निर्यात करें?