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

MySQL क्वेरी: 'demo' खोजें यदि कोई गलती से 'deom' टाइप करे

परिचय

MySQL का SOUNDS LIKE ऑपरेटर (या SOUNDEX() फंक्शन) ध्वन्यात्मक समानता (phonetic similarity) के आधार पर खोज करता है। यह टाइपो (उदाहरण: 'deom' के लिए 'demo', 'samsumg' के लिए 'samsung') सहन करने के लिए उपयोगी है।

उदाहरण: टेबल बनाना और डेटा डालना

mysql> CREATE TABLE DemoTable (
    -> Name VARCHAR(20)
    -> );
Query OK, 0 rows affected (0.95 sec)
mysql> INSERT INTO DemoTable VALUES('John');
Query OK, 1 row affected (0.24 sec)
mysql> INSERT INTO DemoTable VALUES('Adam');
Query OK, 1 row affected (0.33 sec)
mysql> INSERT INTO DemoTable VALUES('Johm');
Query OK, 1 row affected (0.29 sec)
mysql> INSERT INTO DemoTable VALUES('Carol');
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable VALUES('SAMSUNG');
Query OK, 1 row affected (0.12 sec)
mysql> INSERT INTO DemoTable VALUES('SAMSUMG');
Query OK, 1 row affected (0.13 sec)

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

mysql> SELECT * FROM DemoTable;

आउटपुट:

+---------+
| Name    |
+---------+
| John    |
| Adam    |
| Johm    |
| Carol   |
| SAMSUNG |
| SAMSUMG |
+---------+
6 rows in set (0.00 sec)

ध्वन्यात्मक खोज क्वेरी

mysql> SELECT * FROM DemoTable WHERE Name SOUNDS LIKE 'samsung';

परिणाम

+---------+
| Name    |
+---------+
| SAMSUNG |
| SAMSUMG |
+---------+
2 rows in set (0.00 sec)

व्याख्या

  • SOUNDS LIKE - SOUNDEX(expr1) = SOUNDEX(expr2) के बराबर
  • SOUNDEX() - स्ट्रिंग को 4-अक्षर कोड में बदलता है जो अंग्रेजी उच्चारण का अनुमान लगाता है
  • 'SAMSUNG' और 'SAMSUMG' का समान SOUNDEX कोड होता है
  • 'John' और 'Johm' का भी समान SOUNDEX हो सकता है (परीक्षण करें)

SOUNDEX उदाहरण

mysql> SELECT SOUNDEX('SAMSUNG'), SOUNDEX('SAMSUMG'), SOUNDEX('John'), SOUNDEX('Johm');
+--------------------+--------------------+----------------+----------------+
| SOUNDEX('SAMSUNG') | SOUNDEX('SAMSUMG') | SOUNDEX('John') | SOUNDEX('Johm') |
+--------------------+--------------------+----------------+----------------+
| S525               | S525               | J500           | J500           |
+--------------------+--------------------+----------------+----------------+
1 row in set (0.00 sec)

सीमाएं

  • अंग्रेजी-केंद्रित: अंग्रेजी उच्चारण नियमों पर आधारित
  • सीमित सटीकता: कई गलत सकारात्मक/नकारात्मक
  • कोई इंडेक्स नहीं: फुल टेबल स्कैन
  • छोटे स्ट्रिंग्स: 1-2 अक्षर वाले शब्दों के लिए खराब

बेहतर विकल्प

निष्कर्ष

SOUNDS LIKE सरल टाइपो-सहनशील खोज के लिए त्वरित समाधान है, लेकिन उत्पादन फजी खोज के लिए समर्पित खोज इंजन बेहतर हैं।

  1. - MySQL क्वेरी: डॉट से पहले स्ट्रिंग के भाग को बदलें

    CONCAT() और SUBSTRING_INDEX() का उपयोग करके दशमलव से पहले का भाग बदलना इसके लिए CONCAT() के साथ SUBSTRING_INDEX() का उपयोग करें। पहले टेबल बनाएं: create table DemoTable1424 ( Value varchar(60) ); Query OK, 0 rows affected (0.56 sec) रिकॉर्ड डालें: insert into DemoTable1424 values(90944.665665); Qu

  1. - MySQL क्वेरी: निश्चित अंतिम स्ट्रिंग वर्ण के आधार पर क्रमबद्ध करें

    परिचय जब कॉलम मानों में हाइफ़न (-) से अलग सफ़िक्स हों (जैसे John-D, John-Smith), और आप उन सफ़िक्स के आधार पर क्रमबद्ध करना चाहते हैं, तो MySQL के स्ट्रिंग फंक्शन्स और CASE स्टेटमेंट का उपयोग किया जा सकता है। उदाहरण: टेबल बनाना और डेटा डालना ); Query OK, 0 rows affected (0.54 sec) INSERT INTO Dem

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

    परिचय बड़े टेक्स्ट कॉलम में तेजी से खोज के लिए MySQL का FULLTEXT इंडेक्स और MATCH() ... AGAINST सिंटैक्स का उपयोग करें। यह पारंपरिक LIKE %word% से बहुत तेज है। उदाहरण: टेबल और फुलटेक्स्ट इंडेक्स बनाना ); Query OK, 0 rows affected (0.63 sec) CREATE FULLTEXT INDEX faster_title ON DemoTable1554(Tit

© कॉपीराइट https://in.wsxdn.com सर्वाधिकार सुरक्षित
तकनीकउपयोग
Levenshtein दूरीसंपादन दूरी (UDAF या एप्लिकेशन लेवल)
Trigram/NGramउपस्ट्रिंग समानता (pg_trgm, Elasticsearch)
फुलटेक्स्ट + क्वेरी विस्तारMySQL बिल्ट-इन
एप्लिकेशन-लेवल फजी खोजसबसे लचीला (Elasticsearch, Algolia)