Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL डेटाबेस में स्ट्रिंग को तेजी से कैसे खोजें?

परिचय

बड़े टेक्स्ट कॉलम में तेजी से खोज के लिए MySQL का FULLTEXT इंडेक्स और MATCH() ... AGAINST सिंटैक्स का उपयोग करें। यह पारंपरिक LIKE '%word%' से बहुत तेज है।

उदाहरण: टेबल और फुलटेक्स्ट इंडेक्स बनाना

mysql> CREATE TABLE DemoTable1554 (
    -> Title TEXT
    -> );
Query OK, 0 rows affected (0.63 sec)
mysql> CREATE FULLTEXT INDEX faster_title ON DemoTable1554(Title);
Query OK, 0 rows affected, 1 warning (7.09 sec)
Records: 0  Duplicates: 0  Warnings: 1

डेटा डालना

mysql> INSERT INTO DemoTable1554 VALUES('John is working on MySQL database');
Query OK, 1 row affected (0.26 sec)
mysql> INSERT INTO DemoTable1554 VALUES('Adam Smith is working on Java language');
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO DemoTable1554 VALUES('John smith is working on Python Language');
Query OK, 1 row affected (0.17 sec)

सभी रिकॉर्ड देखना

mysql> SELECT * FROM DemoTable1554;

आउटपुट:

+------------------------------------------+
| Title                                    |
+------------------------------------------+
| John is working on MySQL database        |
| Adam Smith is working on Java language   |
| John smith is working on Python Language |
+------------------------------------------+
3 rows in set (0.00 sec)

तेज खोज क्वेरी

mysql> SELECT * FROM DemoTable1554
    -> WHERE MATCH(Title) AGAINST('language' IN BOOLEAN MODE);

परिणाम

+------------------------------------------+
| Title                                    |
+------------------------------------------+
| Adam Smith is working on Java language   |
| John smith is working on Python Language |
+------------------------------------------+
2 rows in set (0.00 sec)

व्याख्या

  • MATCH(Title) - खोजने वाला कॉलम
  • AGAINST('language' IN BOOLEAN MODE) - खोज शब्द 'language', बूलियन मोड में
  • केस-इनसेंसिटिव खोज (डिफ़ॉल्ट)
  • 'language' और 'Language' दोनों मिलते हैं
  • पहला रिकॉर्ड ('MySQL database') मेल नहीं खाता

फुलटेक्स्ट सर्च मोड्स

मोडविवरण
IN NATURAL LANGUAGE MODEडिफ़ॉल्ट, प्राकृतिक भाषा क्वेरी, संबंधितता क्रम
IN BOOLEAN MODEबूलियन ऑपरेटर्स (+, -, *, "") समर्थन
WITH QUERY EXPANSIONखोज विस्तार (दो चरण)

बूलियन मोड ऑपरेटर्स

  • +word - शब्द अनिवार्य
  • -word - शब्द निषिद्ध
  • word* - वाइल्डकार्ड (प्रारंभ)
  • "phrase" - सटीक वाक्यांश

आवश्यकताएं

  • MyISAM या InnoDB (MySQL 5.6+)
  • CHAR, VARCHAR, TEXT कॉलम
  • न्यूनतम शब्द लंबाई (डिफ़ॉल्ट 4, कॉन्फ़िगर करने योग्य: ft_min_word_len)
  • स्टॉपवर्ड सूची (कॉमन शब्द अनदेखे)

फुलटेक्स्ट सर्च बड़े टेक्स्ट डेटासेट पर खोज के लिए मानक समाधान है।

  1. जावास्क्रिप्ट में स्ट्रिंग कैसे खोजें? जावास्क्रिप्ट में स्ट्रिंग कैसे खोजें?

    परिचय जावास्क्रिप्ट में स्ट्रिंग खोजने के लिए search() मेथड का उपयोग किया जाता है जो रेगुलर एक्सप्रेशन (या स्ट्रिंग जो रेगएक्सप में परिवर्तित हो जाती है) लेता है और पहले मिलान का इंडेक्स लौटाता है, या -1 यदि नहीं मिला। उदाहरण निम्न कोड जावास्क्रिप्ट में स्ट्रिंग खोजने के लिए है: <!DOCTYPE html

  1. Java के साथ MySQL डेटाबेस से कनेक्ट करना Java के साथ MySQL डेटाबेस से कनेक्ट करना

    परिचय Java में JDBC (Java Database Connectivity) API का उपयोग करके MySQL डेटाबेस से कनेक्ट किया जाता है। इसके लिए MySQL JDBC ड्राइवर (Connector/J) की आवश्यकता होती है। कनेक्शन URL और पैरामीटर्स String MySQLURL = jdbc:mysql://localhost:3306/yourDatabaseName?useSSL=false; String databaseUserName = yo

  1. - MySQL में खोज क्वेरी के लिए उपयुक्त डेटाबेस फ़ील्ड टाइप

    REGEXP_INSTR() फ़ंक्शन (MySQL 8.0+) स्ट्रिंग में उपस्ट्रिंग की स्थिति लौटाता है; 0 = नहीं मिला। select * from yourTableName where REGEXP_INSTR(yourColumnName, yourSearchValue); उदाहरण insert into demo64(name) values(John Smith), (John Doe), (Chris Brown), (David Miller), (Carol Taylor); John खोज