If tutorials available on this website are helpful for you, please whitelist this website in your ad blocker😭 or Donate to help us ❤️ pay for the web hosting to keep the website running.
पिछले topic में आपने FULLTEXT search (FTS) का concept समझा , और इस topic में हम सीखेंगे कि FULLTEXT Index का use करके records को किस तरह से filter करते हैं।
natural language full-text searches में MySQL Table से वही records fetch होते हैं जो search की गयी query के लिए सबसे relevant हों।
Most relevant records के लिए MySQL Relevance calculate करती है , basically Relevance एक floating point number होता है जब relevance 0 होता है तो इसका मतलब है कि कोई match नहीं है। MySQL कई factors के bases पर Relevance calculate करता है जैसे , row में कितने words हैं , कितने unique words हैं , total words कितने है और total rows कितनी है जिसमे वो particular word है।
***
MySQL में natural-language full-text searches perform करने के लिए WHERE Clause के साथ MATCH()
और AGAINST()
functions का use किया जाता है।
SELECT * FROM table_name WHERE MATCH(column_name) AGAINST('YOUR SEARCH QUERY');
MATCH()
में हम वो column name pass करते हैं जिसमे FULLTEXT Index है , और AGAINST()
function में को keywords रखते हैं , जिनके bases पर records filter करने हैं।
natural-language full-text search के Example के लिए हम पिछले topic में बनाई हुई blogs
table का use करेंगे जिसका structure कुछ इस तरह से है -
+-------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | title | varchar(255) | NO | | NULL | | | description | text | YES | MUL | NULL | | +-------------+--------------+------+-----+---------+----------------+
full-text search के लिए सबसे पहले title
और description
column में FULLTEXT Index add कर देते हैं।
ALTER TABLE blogs ADD FULLTEXT(title, description);
Example के लिए "PHP" word के bases पर records search करके देखते हैं -
SELECT title FROM blogs WHERE MATCH(title) AGAINST('PHP');
+---------------------+ | title | +---------------------+ | PHP Introduction | | PHP Variables | | PHP Magic Constants | | PHP Operators | | Python Vs PHP | +---------------------+
FULLTEXT search की सबसे अच्छी बात यही है कि सबसे relevant records ही पहले आते हैं , जैसे कि आप output में देख सकते हैं जिन records PHP पहले हैं वो top पर हैं।
By default AGAINST() function , IN NATURAL LANGUAGE MODE
को use करता है -
SELECT title FROM blogs WHERE MATCH(title) AGAINST('PHP', IN NATURAL LANGUAGE MODE);
ऊपर दी गयी query run करने पर भी आपको same result मिलेगा।
हालाँकि आप चाहे तो IN BOOLEAN MODE
भी use कर सकते हैं , BOOLEAN mode थोड़ा advance search functionality provide करता है।
आप multiple words को comma separated करके AGAINST() function में pass करके filter होने वाले records का order भी sort कर सकते हैं , जिस order में आप values pass करेंगे MySQL उसी order में records को show कर देगा।
SELECT title FROM blogs WHERE MATCH(title) AGAINST('php,python');
इससे सबसे पहले वो records आएंगे जिनमे PHP , Python दोनों होगा , फिर जिसमे सिर्फ Python होगा उसके बाद वो records होंगे जिनमे सिर्फ PHP होगा।
+---------------------+ | title | +---------------------+ | Python Vs PHP | | Python Tutorials | | PHP Introduction | | PHP Variables | | PHP Magic Constants | | PHP Operators | +---------------------+