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

MATCH () के खिलाफ () का उपयोग करके स्ट्रिंग और संख्या के लिए MySQL खोज

अगर आपको Fiat चाहिए और 500 कहीं भी जहां आदेश मायने नहीं रखता, तब

SELECT * FROM models MATCH(name) AGAINST('+Fiat +500');

अगर आपको Fiat 500 . की आवश्यकता है एक साथ, फिर

SELECT * FROM models MATCH(name) AGAINST('+"Fiat 500"');

अगर आपको Fiat चाहिए और शून्य या अधिक 500 , फिर

SELECT * FROM models MATCH(name) AGAINST('+Fiat 500');

अगर आपको 500 चाहिए और शून्य या अधिक Fiat , फिर

SELECT * FROM models MATCH(name) AGAINST('Fiat +500');

इसे आज़माएं !!!

अद्यतन 2013-01-28 18:28 EDT

यहाँ FULLTEXT खोज के लिए डिफ़ॉल्ट सेटिंग्स हैं

mysql> show variables like 'ft%';
+--------------------------+----------------+
| Variable_name            | Value          |
+--------------------------+----------------+
| ft_boolean_syntax        | + -><()~*:""&| |
| ft_max_word_len          | 84             |
| ft_min_word_len          | 4              |
| ft_query_expansion_limit | 20             |
| ft_stopword_file         | (built-in)     |
+--------------------------+----------------+
5 rows in set (0.00 sec)

mysql>

ध्यान दें कि ft_min_word_len डिफ़ॉल्ट रूप से 4 है। टोकन 500 लंबाई 3 है। इस प्रकार इसे बिल्कुल भी अनुक्रमित नहीं किया जाएगा। आपको तीन (3) चीजें करनी होंगी:

चरण 01:छोटे स्ट्रिंग टोकन के लिए कॉन्फ़िगर करें

इसे /etc/my.cnf में जोड़ें

[mysqld]
ft_min_word_len = 1

चरण 02:mysql को पुनरारंभ करें

service mysql restart

STEP 03 :models . में सभी इंडेक्स को फिर से इंडेक्स करें टेबल

आप बस FULLTEXT अनुक्रमणिका को छोड़ कर जोड़ सकते हैं

या इसे चरणों में करें और देखें कि यह पहले से कितना बड़ा हो जाएगा

CREATE TABLE models_new LIKE models;
ALTER TABLE models_new DROP INDEX name;
ALTER TABLE models_new ADD FULLTEXT name (name);
ALTER TABLE models_new DISABLE KEYS;
INSERT INTO models_new SELECT * FROM models;
ALTER TABLE models_new ENABLE KEYS;
ALTER TABLE models RENAME models_old;
ALTER TABLE models_new RENAME models;

जब आप संतुष्ट हों तो यह काम कर गया, फिर दौड़ें

DROP TABLE models_old;

इसे आज़माएं !!!



  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. रेल में एकाधिक तालिका जुड़ती है

  3. क्या mysqldumps को लोड करने का कोई तेज़ तरीका है?

  4. क्या कोई विदेशी कुंजी प्राथमिक कुंजी के रूप में कार्य कर सकती है?

  5. JQuery स्वत:पूर्ण के साथ छवि को एकीकृत करना