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

MySQL में MATCH () फ़ंक्शन कैसे काम करता है

MySQL में, MATCH() फ़ंक्शन एक पूर्ण-पाठ खोज करता है। यह खोजे जाने वाले तालिका स्तंभों की अल्पविराम से अलग की गई सूची को स्वीकार करता है।

टेबल्स में FULLTEXT . होना चाहिए इससे पहले कि आप उनके खिलाफ एक पूर्ण-पाठ खोज कर सकें (हालांकि MyISAM के विरुद्ध बूलियन क्वेरीज़) खोज अनुक्रमणिका काम कर सकती है — यद्यपि धीरे-धीरे — बिना FULLTEXT . के भी अनुक्रमणिका)।

आप एक FULLTEXT बना सकते हैं तालिका बनाते समय अनुक्रमणिका (CREATE TABLE का उपयोग करके) स्टेटमेंट), या आप ALTER TABLE . का उपयोग कर सकते हैं स्टेटमेंट या CREATE INDEX स्टेटमेंट अगर टेबल पहले से मौजूद है।

डिफ़ॉल्ट रूप से, खोज केस-संवेदी होती है। केस-संवेदी खोज करने के लिए, अनुक्रमित कॉलम के लिए केस-संवेदी या बाइनरी कॉलेशन का उपयोग करें।

सिंटैक्स

MATCH() . के लिए सिंटैक्स फ़ंक्शन इस प्रकार है:

MATCH (col1,col2,...) AGAINST (expr [search_modifier])

जहां col1,col2,... खोज करने के लिए स्तंभों की अल्पविराम से अलग की गई सूची है, और expr इनपुट स्ट्रिंग/अभिव्यक्ति है।

वैकल्पिक search_modifier तर्क आपको खोज प्रकार निर्दिष्ट करने की अनुमति देता है। यह निम्न में से कोई भी मान हो सकता है:

  • IN NATURAL LANGUAGE MODE
  • IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION
  • IN BOOLEAN MODE
  • WITH QUERY EXPANSION

डिफ़ॉल्ट मोड IN NATURAL LANGUAGE MODE . है ।

उदाहरण 1 - मूल उपयोग

इस फ़ंक्शन का उपयोग करने का एक उदाहरण यहां दिया गया है:

SELECT AlbumId, AlbumName
FROM Albums
WHERE MATCH(AlbumName) AGAINST('cool');

परिणाम:

+---------+--------------------+
| AlbumId | AlbumName          |
+---------+--------------------+
|       5 | Casualties of Cool |
+---------+--------------------+

यहां पूरी तालिका दी गई है जिसके विरुद्ध उपरोक्त क्वेरी चलाई गई थी:

SELECT AlbumId, AlbumName
FROM Albums;

परिणाम:

+---------+--------------------------+
| AlbumId | AlbumName                |
+---------+--------------------------+
|       1 | Powerslave               |
|       2 | Powerage                 |
|       3 | Singing Down the Lane    |
|       4 | Ziltoid the Omniscient   |
|       5 | Casualties of Cool       |
|       6 | Epicloud                 |
|       7 | Somewhere in Time        |
|       8 | Piece of Mind            |
|       9 | Killers                  |
|      10 | No Prayer for the Dying  |
|      11 | No Sound Without Silence |
|      12 | Big Swing Face           |
|      13 | Blue Night               |
|      14 | Eternity                 |
|      15 | Scandinavia              |
|      16 | Long Lost Suitcase       |
|      17 | Praise and Blame         |
|      18 | Along Came Jones         |
|      19 | All Night Wrong          |
|      20 | The Sixteen Men of Tain  |
+---------+--------------------------+

उदाहरण 2 - त्रुटि:"FULLTEXT अनुक्रमणिका नहीं ढूँढ सकता"

InnoDB टेबल में FULLTEXT होना चाहिए अनुक्रमणिका से पहले यह एक पूर्ण-पाठ खोज से परिणाम लौटाएगा। अगर इसमें FULLTEXT नहीं है अनुक्रमणिका, आपको निम्न त्रुटि मिलने की संभावना है:

ERROR 1191 (HY000): Can't find FULLTEXT index matching the column list

यदि आपको वह त्रुटि मिलती है, तो आपको एक FULLTEXT add जोड़ना होगा उन सभी स्तंभों के लिए अनुक्रमणिका जिन्हें आप खोजने का प्रयास कर रहे हैं (अगला उदाहरण देखें)।

इसका अपवाद तब हो सकता है जब आप MyISAM . के विरुद्ध बूलियन क्वेरी चला रहे हों खोज सूचकांक।

अधिक विशिष्ट होने के लिए, बूलियन पूर्ण-पाठ खोजों के लिए MySQL दस्तावेज़ीकरण निम्नलिखित बताता है:

<ब्लॉककोट>

InnoDB तालिकाओं के लिए FULLTEXT की आवश्यकता होती है MATCH() . के सभी स्तंभों पर अनुक्रमणिका बूलियन प्रश्नों को करने के लिए अभिव्यक्ति। MyISAM . के विरुद्ध बूलियन क्वेरीज़ सर्च इंडेक्स FULLTEXT . के बिना भी काम कर सकता है अनुक्रमणिका, हालांकि इस तरह की गई खोज काफी धीमी होगी।

उदाहरण 3 - किसी मौजूदा तालिका में FULLTEXT अनुक्रमणिका जोड़ना

यहां FULLTEXT जोड़ने का एक उदाहरण दिया गया है मौजूदा तालिका में अनुक्रमणिका:

ALTER TABLE Albums  
ADD FULLTEXT(AlbumName);

इस मामले में, मैंने AlbumName . की सामग्री को अनुक्रमित किया है कॉलम।

एकाधिक स्तंभों को अनुक्रमित करने के लिए, उन्हें अल्पविराम से अलग करें (अगला उदाहरण देखें)।

उदाहरण 4 - एकाधिक कॉलम खोजना

यदि आपको लगता है कि आपको एक से अधिक कॉलम खोजने होंगे, तो आपको एक इंडेक्स बनाना होगा जिसमें खोजे जाने वाले सभी कॉलम शामिल हों। ऐसा करने के लिए, बस प्रत्येक कॉलम को अल्पविराम से अलग की गई सूची के रूप में शामिल करें।

यहां एक उदाहरण दिया गया है जहां मैं एक FULLTEXT add जोड़ता हूं film . के लिए अनुक्रमणिका तालिका (जो सकीला नमूना डेटाबेस का हिस्सा है)।

ALTER TABLE film 
ADD FULLTEXT(title, description);

इस मामले में, मैं title . की सामग्री को अनुक्रमित करता हूं और description कॉलम।

अब जबकि हमने एक FULLTEXT . बना लिया है दोनों स्तंभों के लिए अनुक्रमणिका, हम उनके विरुद्ध एक पूर्ण-पाठ खोज कर सकते हैं:

SELECT title, description
FROM film
WHERE MATCH(title, description) AGAINST('vertigo');

परिणाम:

+-------------------+-----------------------------------------------------------------------------------------------------------+
| title             | description                                                                                               |
+-------------------+-----------------------------------------------------------------------------------------------------------+
| VERTIGO NORTHWEST | A Unbelieveable Display of a Mad Scientist And a Mad Scientist who must Outgun a Mad Cow in Ancient Japan |
+-------------------+-----------------------------------------------------------------------------------------------------------+

यहां एक और खोज है, जहां सटीक कुंजी-वाक्यांश मेल नहीं खाता, लेकिन उस वाक्यांश के भीतर प्रत्येक कीवर्ड करता है:

SELECT title, description
FROM film
WHERE MATCH(title, description) AGAINST('Iron Maiden');

परिणाम:

+-------------+---------------------------------------------------------------------------------------------------------+
| title       | description                                                                                             |
+-------------+---------------------------------------------------------------------------------------------------------+
| IRON MOON   | A Fast-Paced Documentary of a Mad Cow And a Boy who must Pursue a Dentist in A Baloon                   |
| MAIDEN HOME | A Lacklusture Saga of a Moose And a Teacher who must Kill a Forensic Psychologist in A MySQL Convention |
+-------------+---------------------------------------------------------------------------------------------------------+

यदि आप केवल सटीक वाक्यांश का मिलान करना चाहते हैं, तो उसके चारों ओर दोहरे उद्धरण चिह्न लगाएं:

SELECT title, description
FROM film
WHERE MATCH(title, description) AGAINST('"Iron Maiden"');

परिणाम:

Empty set (0.00 sec)

इस मामले में, किसी भी कॉलम में वह सटीक वाक्यांश नहीं है।

उदाहरण 5 - प्रासंगिकता स्कोर लौटाएं

जब भी आप MATCH() . का उपयोग करते हैं फ़ंक्शन, तालिका में प्रत्येक पंक्ति को एक प्रासंगिकता मान असाइन किया गया है। दूसरे शब्दों में, प्रत्येक पंक्ति को एक अंक मिलता है जो यह निर्धारित करता है कि यह खोज शब्द के लिए कितना प्रासंगिक है। फिर परिणाम प्रासंगिकता के आधार पर क्रमबद्ध किए जाते हैं (सबसे पहले प्रासंगिकता सबसे पहले)।

प्रासंगिकता मान गैर-ऋणात्मक फ़्लोटिंग-पॉइंट संख्याएं हैं। शून्य प्रासंगिकता का मतलब समानता नहीं है। प्रासंगिकता की गणना पंक्ति में शब्दों की संख्या (दस्तावेज़), पंक्ति में अद्वितीय शब्दों की संख्या, संग्रह में शब्दों की कुल संख्या, और पंक्तियों की संख्या के आधार पर की जाती है जिसमें एक विशेष शब्द होता है।

प्रत्येक परिणाम की प्रासंगिकता वापस करने के लिए, बस MATCH() . शामिल करें अपने कॉलम की सूची में चयन करने के लिए कार्य करें।

उदाहरण:

SELECT 
  MATCH(title, description) AGAINST('Iron Maiden') AS Relevance,
  title, 
  description
FROM film
WHERE MATCH(title, description) AGAINST('Iron Maiden');

परिणाम:

+-----------+-------------+---------------------------------------------------------------------------------------------------------+
| Relevance | title       | description                                                                                             |
+-----------+-------------+---------------------------------------------------------------------------------------------------------+
|         9 | IRON MOON   | A Fast-Paced Documentary of a Mad Cow And a Boy who must Pursue a Dentist in A Baloon                   |
|         9 | MAIDEN HOME | A Lacklusture Saga of a Moose And a Teacher who must Kill a Forensic Psychologist in A MySQL Convention |
+-----------+-------------+---------------------------------------------------------------------------------------------------------+

इस मामले में दोनों पंक्तियों के लिए प्रासंगिकता स्कोर बहुत अधिक है।

यहाँ एक और है जहाँ प्रासंगिकता कम है:

SELECT 
  MATCH(title, description) AGAINST('Saga of a Moose') AS Relevance,
  title, 
  description
FROM film
WHERE MATCH(title, description) AGAINST('Saga of a Moose')
LIMIT 15;

परिणाम:

+--------------------+------------------------+---------------------------------------------------------------------------------------------------------+
| Relevance          | title                  | description                                                                                             |
+--------------------+------------------------+---------------------------------------------------------------------------------------------------------+
| 2.4431142807006836 | CAPER MOTIONS          | A Fateful Saga of a Moose And a Car who must Pursue a Woman in A MySQL Convention                       |
| 2.4431142807006836 | DATE SPEED             | A Touching Saga of a Composer And a Moose who must Discover a Dentist in A MySQL Convention             |
| 2.4431142807006836 | DELIVERANCE MULHOLLAND | A Astounding Saga of a Monkey And a Moose who must Conquer a Butler in A Shark Tank                     |
| 2.4431142807006836 | FLASH WARS             | A Astounding Saga of a Moose And a Pastry Chef who must Chase a Student in The Gulf of Mexico           |
| 2.4431142807006836 | HAROLD FRENCH          | A Stunning Saga of a Sumo Wrestler And a Student who must Outrace a Moose in The Sahara Desert          |
| 2.4431142807006836 | MAIDEN HOME            | A Lacklusture Saga of a Moose And a Teacher who must Kill a Forensic Psychologist in A MySQL Convention |
| 2.4431142807006836 | SHANE DARKNESS         | A Action-Packed Saga of a Moose And a Lumberjack who must Find a Woman in Berlin                        |
| 2.4431142807006836 | SLEEPLESS MONSOON      | A Amazing Saga of a Moose And a Pastry Chef who must Escape a Butler in Australia                       |
| 2.4431142807006836 | WAKE JAWS              | A Beautiful Saga of a Feminist And a Composer who must Challenge a Moose in Berlin                      |
| 2.4431142807006836 | WONKA SEA              | A Brilliant Saga of a Boat And a Mad Scientist who must Meet a Moose in Ancient India                   |
| 1.2399028539657593 | AIRPLANE SIERRA        | A Touching Saga of a Hunter And a Butler who must Discover a Butler in A Jet Boat                       |
| 1.2399028539657593 | ALASKA PHANTOM         | A Fanciful Saga of a Hunter And a Pastry Chef who must Vanquish a Boy in Australia                      |
| 1.2399028539657593 | ARMY FLINTSTONES       | A Boring Saga of a Database Administrator And a Womanizer who must Battle a Waitress in Nigeria         |
| 1.2399028539657593 | BEAR GRACELAND         | A Astounding Saga of a Dog And a Boy who must Kill a Teacher in The First Manned Space Station          |
| 1.2399028539657593 | BERETS AGENT           | A Taut Saga of a Crocodile And a Boy who must Overcome a Technical Writer in Ancient China              |
+--------------------+------------------------+---------------------------------------------------------------------------------------------------------+

ध्यान दें कि यदि मैंने LIMIT 15 . का उपयोग नहीं किया होता तो परिणाम सेट बहुत बड़ा होता परिणामों की संख्या को 15 तक सीमित करने के लिए.

उदाहरण 6 - केवल एक निश्चित प्रासंगिकता स्कोर से ऊपर के परिणाम लौटाएं

हम पिछले उदाहरण को एक कदम आगे ले जा सकते हैं और एक निश्चित प्रासंगिकता स्कोर वाले केवल उन परिणामों को फ़िल्टर कर सकते हैं। इस मामले में मैं निर्दिष्ट करता हूं कि प्रासंगिकता स्कोर 2 से अधिक होना चाहिए।

हालांकि ऐसा करते समय सावधान रहें। जैसा कि ऊपर देखा गया है, प्रासंगिकता मान बहुत अधिक या बहुत कम हो सकते हैं, यह इस बात पर निर्भर करता है कि कॉलम में कितना टेक्स्ट है, कितनी अन्य पंक्तियाँ खोज शब्द से मेल खाती हैं, आदि।

SELECT 
  MATCH(title, description) AGAINST('Saga of a Moose') AS Relevance,
  title, 
  description
FROM film
WHERE MATCH(title, description) AGAINST('Saga of a Moose') > 2;

परिणाम:

+--------------------+------------------------+---------------------------------------------------------------------------------------------------------+
| Relevance          | title                  | description                                                                                             |
+--------------------+------------------------+---------------------------------------------------------------------------------------------------------+
| 2.4431142807006836 | CAPER MOTIONS          | A Fateful Saga of a Moose And a Car who must Pursue a Woman in A MySQL Convention                       |
| 2.4431142807006836 | DATE SPEED             | A Touching Saga of a Composer And a Moose who must Discover a Dentist in A MySQL Convention             |
| 2.4431142807006836 | DELIVERANCE MULHOLLAND | A Astounding Saga of a Monkey And a Moose who must Conquer a Butler in A Shark Tank                     |
| 2.4431142807006836 | FLASH WARS             | A Astounding Saga of a Moose And a Pastry Chef who must Chase a Student in The Gulf of Mexico           |
| 2.4431142807006836 | HAROLD FRENCH          | A Stunning Saga of a Sumo Wrestler And a Student who must Outrace a Moose in The Sahara Desert          |
| 2.4431142807006836 | MAIDEN HOME            | A Lacklusture Saga of a Moose And a Teacher who must Kill a Forensic Psychologist in A MySQL Convention |
| 2.4431142807006836 | SHANE DARKNESS         | A Action-Packed Saga of a Moose And a Lumberjack who must Find a Woman in Berlin                        |
| 2.4431142807006836 | SLEEPLESS MONSOON      | A Amazing Saga of a Moose And a Pastry Chef who must Escape a Butler in Australia                       |
| 2.4431142807006836 | WAKE JAWS              | A Beautiful Saga of a Feminist And a Composer who must Challenge a Moose in Berlin                      |
| 2.4431142807006836 | WONKA SEA              | A Brilliant Saga of a Boat And a Mad Scientist who must Meet a Moose in Ancient India                   |
+--------------------+------------------------+---------------------------------------------------------------------------------------------------------+

उदाहरण 7 - शून्य प्रासंगिकता परिणाम शामिल करें

यहां प्रत्येक पंक्ति के लिए प्रासंगिक मानों को सूचीबद्ध करने का एक उदाहरण दिया गया है, भले ही प्रासंगिकता मान शून्य हो। हम MATCH() . का उपयोग न करके ऐसा कर सकते हैं WHERE . में काम करता है खंड।

इस उदाहरण में, मैं वास्तव में WHERE . का उपयोग नहीं करता हूं खंड। मैं केवल एक LIMIT . का उपयोग करता हूं परिणामों की संख्या को सीमित करने के लिए खंड।

SELECT 
  MATCH(title, description) AGAINST('Scientist') AS Relevance,
  title, 
  description
FROM film
LIMIT 15;

परिणाम:

+-------------------+------------------+-----------------------------------------------------------------------------------------------------------------------+
| Relevance         | title            | description                                                                                                           |
+-------------------+------------------+-----------------------------------------------------------------------------------------------------------------------+
| 1.026631474494934 | ACADEMY DINOSAUR | A Epic Drama of a Feminist And a Mad Scientist who must Battle a Teacher in The Canadian Rockies                      |
|                 0 | ACE GOLDFINGER   | A Astounding Epistle of a Database Administrator And a Explorer who must Find a Car in Ancient China                  |
|                 0 | ADAPTATION HOLES | A Astounding Reflection of a Lumberjack And a Car who must Sink a Lumberjack in A Baloon Factory                      |
|                 0 | AFFAIR PREJUDICE | A Fanciful Documentary of a Frisbee And a Lumberjack who must Chase a Monkey in A Shark Tank                          |
|                 0 | AFRICAN EGG      | A Fast-Paced Documentary of a Pastry Chef And a Dentist who must Pursue a Forensic Psychologist in The Gulf of Mexico |
|                 0 | AGENT TRUMAN     | A Intrepid Panorama of a Robot And a Boy who must Escape a Sumo Wrestler in Ancient China                             |
|                 0 | AIRPLANE SIERRA  | A Touching Saga of a Hunter And a Butler who must Discover a Butler in A Jet Boat                                     |
|                 0 | AIRPORT POLLOCK  | A Epic Tale of a Moose And a Girl who must Confront a Monkey in Ancient India                                         |
| 2.053262948989868 | ALABAMA DEVIL    | A Thoughtful Panorama of a Database Administrator And a Mad Scientist who must Outgun a Mad Scientist in A Jet Boat   |
|                 0 | ALADDIN CALENDAR | A Action-Packed Tale of a Man And a Lumberjack who must Reach a Feminist in Ancient China                             |
|                 0 | ALAMO VIDEOTAPE  | A Boring Epistle of a Butler And a Cat who must Fight a Pastry Chef in A MySQL Convention                             |
|                 0 | ALASKA PHANTOM   | A Fanciful Saga of a Hunter And a Pastry Chef who must Vanquish a Boy in Australia                                    |
|                 0 | ALI FOREVER      | A Action-Packed Drama of a Dentist And a Crocodile who must Battle a Feminist in The Canadian Rockies                 |
|                 0 | ALICE FANTASIA   | A Emotional Drama of a A Shark And a Database Administrator who must Vanquish a Pioneer in Soviet Georgia             |
| 1.026631474494934 | ALIEN CENTER     | A Brilliant Drama of a Cat And a Mad Scientist who must Battle a Feminist in A MySQL Convention                       |
+-------------------+------------------+-----------------------------------------------------------------------------------------------------------------------+

उदाहरण 8 - बूलियन मोड

MySQL हमें बूलियन मोड में पूर्ण-पाठ खोजों को चलाने की अनुमति देता है। ऐसा करने के लिए, IN BOOLEAN MODE जोड़ें आपकी क्वेरी में संशोधक।

बूलियन मोड आपको + . जैसे ऑपरेटरों का उपयोग करने की अनुमति देता है और - यह निर्दिष्ट करने के लिए कि कोई विशेष शब्द या वाक्यांश मौजूद होना चाहिए या नहीं।

निम्नलिखित उदाहरण में, मैं प्रत्येक शब्द को प्लस चिह्न (+ . के साथ उपसर्ग करता हूं ) यह इंगित करने के लिए कि दोनों शब्द मौजूद होने चाहिए।

SELECT 
  title, 
  description
FROM film
WHERE MATCH(title, description) AGAINST('+Saga +Moose' IN BOOLEAN MODE)
LIMIT 3;

परिणाम:

+------------------------+---------------------------------------------------------------------------------------------+
| title                  | description                                                                                 |
+------------------------+---------------------------------------------------------------------------------------------+
| CAPER MOTIONS          | A Fateful Saga of a Moose And a Car who must Pursue a Woman in A MySQL Convention           |
| DATE SPEED             | A Touching Saga of a Composer And a Moose who must Discover a Dentist in A MySQL Convention |
| DELIVERANCE MULHOLLAND | A Astounding Saga of a Monkey And a Moose who must Conquer a Butler in A Shark Tank         |
+------------------------+---------------------------------------------------------------------------------------------+

अगले उदाहरण में, मैं धन चिह्नों में से एक को ऋण चिह्न में बदल देता हूँ (- ) इसका मतलब है कि केवल वे पंक्तियाँ जिनमें Saga word शब्द है लौटा दिया जाएगा, लेकिन केवल तभी जब वे नहीं Moose . भी शामिल है :

SELECT 
  title, 
  description
FROM film
WHERE MATCH(title, description) AGAINST('+Saga -Moose' IN BOOLEAN MODE)
LIMIT 3;

परिणाम:

+------------------+-------------------------------------------------------------------------------------------------+
| title            | description                                                                                     |
+------------------+-------------------------------------------------------------------------------------------------+
| AIRPLANE SIERRA  | A Touching Saga of a Hunter And a Butler who must Discover a Butler in A Jet Boat               |
| ALASKA PHANTOM   | A Fanciful Saga of a Hunter And a Pastry Chef who must Vanquish a Boy in Australia              |
| ARMY FLINTSTONES | A Boring Saga of a Database Administrator And a Womanizer who must Battle a Waitress in Nigeria |
+------------------+-------------------------------------------------------------------------------------------------+

ऋण चिह्न का उपयोग उन परिणामों को बाहर करने के लिए किया जाता है जो अन्यथा वापस आ जाएंगे। इसलिए, यदि हमारे सभी खोज शब्दों में ऋण चिह्न लगा होता है, तो एक खाली सेट वापस आ जाता है।

SELECT 
  title, 
  description
FROM film
WHERE MATCH(title, description) AGAINST('-Saga -Moose' IN BOOLEAN MODE)
LIMIT 3;

परिणाम:

Empty set (0.00 sec)

ऐसे और भी कई ऑपरेटर हैं जिनका उपयोग बूलियन खोजों के साथ किया जा सकता है, जैसे ~ , < , > , * , और अधिक। बूलियन मोड का उपयोग करने के बारे में अधिक विस्तृत जानकारी के लिए, बूलियन पूर्ण-पाठ खोजों के लिए MySQL दस्तावेज़ देखें।

उदाहरण 9 - ब्लाइंड क्वेरी विस्तार के साथ

आप WITH QUERY EXPANSION . का उपयोग कर सकते हैं या IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION नेत्रहीन क्वेरी विस्तार करने के लिए संशोधक। यह तब उपयोगी हो सकता है जब खोज वाक्यांश बहुत छोटा हो, और जहां लौटाए गए परिणाम बहुत संकीर्ण हों (इस प्रकार संभावित रूप से प्रासंगिक दस्तावेज़ों को छोड़कर)।

क्वेरी विस्तार उन पंक्तियों को वापस करके खोज को विस्तृत कर सकता है जिन्हें अन्यथा वापस नहीं किया जाएगा। विशेष रूप से, यदि मेल न खाने वाली पंक्ति में ऐसे शब्द हैं जो एक मेल खाने वाली पंक्ति में भी शामिल हैं, तो वह गैर-मिलान पंक्ति एक मेल खाने वाली पंक्ति बन सकती है। दूसरे शब्दों में, एक गैर-मिलान वाली पंक्ति अभी भी वापस की जा सकती है, क्योंकि यह अन्य शब्दों को एक मिलान पंक्ति के साथ साझा करती है।

प्रदर्शित करने के लिए, यहां बिना के लिए एक सामान्य खोज है क्वेरी विस्तार:

SELECT AlbumId, AlbumName
FROM Albums
WHERE MATCH(AlbumName) AGAINST('Blue' IN NATURAL LANGUAGE MODE);

परिणाम:

+---------+------------+
| AlbumId | AlbumName  |
+---------+------------+
|      13 | Blue Night |
+---------+------------+

मैंने स्पष्ट रूप से IN NATURAL LANGUAGE MODE stated कहा है लेकिन यह डिफ़ॉल्ट मोड है, इसलिए अगर मैं ऐसा करना चाहता तो मैं इस संशोधक को भी छोड़ सकता था।

और यहाँ वही खोज है साथ क्वेरी विस्तार:

SELECT AlbumId, AlbumName
FROM Albums
WHERE MATCH(AlbumName) AGAINST('Blue' WITH QUERY EXPANSION);

परिणाम:

+---------+-----------------+
| AlbumId | AlbumName       |
+---------+-----------------+
|      13 | Blue Night      |
|      19 | All Night Wrong |
+---------+-----------------+

इस मामले में, दो परिणाम लौटाए जाते हैं। ध्यान दें कि कैसे दूसरे परिणाम में खोज वाक्यांश शामिल नहीं है (blue ) लेकिन इसमें Night शब्द जरूर है जो पहले परिणाम में भी होता है। तो विस्तारित क्वेरी एक मैच होने के लिए काफी अच्छा मानती है।

एल्बम नाम शायद क्वेरी विस्तार मोड के लिए बहुत अच्छा उपयोग केस नहीं हैं। डेटाबेस . के लिए खोज एक बेहतर उपयोग मामला हो सकता है , जहां एक विस्तारित क्वेरी MySQL . जैसे नाम वाले दस्तावेज़ भी लौटा सकती है , ओरेकल , आदि, भले ही उनमें डेटाबेस . वाक्यांश न हो .

यहाँ एक और उदाहरण है। हालांकि, यह उदाहरण यह निर्दिष्ट करने के लिए दोहरे उद्धरण चिह्नों का उपयोग करता है कि संपूर्ण खोज शब्द मौजूद होना चाहिए।

अगर हम खोज बिना . करते हैं क्वेरी विस्तार:

SELECT 
  title, 
  description
FROM film
WHERE MATCH(title, description) AGAINST('"Feminist And a Mad Scientist"')
LIMIT 3;

परिणाम:

+------------------+--------------------------------------------------------------------------------------------------+
| title            | description                                                                                      |
+------------------+--------------------------------------------------------------------------------------------------+
| ACADEMY DINOSAUR | A Epic Drama of a Feminist And a Mad Scientist who must Battle a Teacher in The Canadian Rockies |
+------------------+--------------------------------------------------------------------------------------------------+

केवल एक परिणाम लौटाया जाता है (यह एकमात्र परिणाम है जिसमें संपूर्ण वाक्यांश शामिल है, ठीक उसी तरह जैसा कि टाइप किया गया है)।

लेकिन अगर हम अंधा क्वेरी विस्तार का उपयोग करते हैं, तो यहां क्या होता है:

SELECT 
  title, 
  description
FROM film
WHERE MATCH(title, description) AGAINST('"Feminist And a Mad Scientist"' WITH QUERY EXPANSION)
LIMIT 3;

परिणाम:

+--------------------+------------------------------------------------------------------------------------------------------+
| title              | description                                                                                          |
+--------------------+------------------------------------------------------------------------------------------------------+
| ACADEMY DINOSAUR   | A Epic Drama of a Feminist And a Mad Scientist who must Battle a Teacher in The Canadian Rockies     |
| DINOSAUR SECRETARY | A Action-Packed Drama of a Feminist And a Girl who must Reach a Robot in The Canadian Rockies        |
| VICTORY ACADEMY    | A Insightful Epistle of a Mad Scientist And a Explorer who must Challenge a Cat in The Sahara Desert |
+--------------------+------------------------------------------------------------------------------------------------------+

पहली पंक्ति वही है जब हमने क्वेरी विस्तार का उपयोग नहीं किया था। हालांकि, क्वेरी तब जाती है और उन पंक्तियों को लौटाती है जिनमें केवल हमारे खोज शब्द के हिस्से होते हैं। यह परिणाम केवल तीन तक सीमित है क्योंकि मैंने LIMIT 3 . का उपयोग किया है . वास्तविक परिणाम बहुत अधिक हैं:

SELECT COUNT(*)
FROM film
WHERE MATCH(title, description) AGAINST('"Feminist And a Mad Scientist"' WITH QUERY EXPANSION);

परिणाम:

+----------+
| COUNT(*) |
+----------+
|     1000 |
+----------+

यह बहुत संभव है कि उनमें से कई परिणाम खोज शब्द के लिए पूरी तरह अप्रासंगिक हों। इसलिए, अंधा क्वेरी विस्तार आमतौर पर छोटे खोज शब्दों के लिए सबसे अच्छा काम करता है।

ब्लाइंड क्वेरी विस्तार का उपयोग करने के बारे में अधिक जानकारी के लिए, 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 IN स्टेटमेंट के लिए PDO बाइंडिंग मान

  2. मैक ओएस एक्स पर MySQL पायथन स्थापित करना

  3. मॉनिटरिंग Percona XtraDB क्लस्टर - प्रमुख मेट्रिक्स

  4. MySQL में विभाजन से अधिक रैंक कैसे करें

  5. एक बहु किरायेदार mysql डेटाबेस कैसे डिज़ाइन करें