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

C++ शब्द का चयन करने के लिए आप अपनी फुलटेक्स्ट बूलियन खोज कैसे प्राप्त करते हैं?

आपको MySQL के विचार को बदलना होगा कि एक शब्द क्या है।

सबसे पहले, डिफ़ॉल्ट न्यूनतम शब्द लंबाई 4 है। इसका मतलब है कि कोई भी खोज शब्द जिसमें केवल <4 अक्षरों के शब्द हों, कभी भी मेल नहीं खाएंगे, चाहे वह 'सी ++' या 'सीपीपी' हो। आप इसे ft_min_word_len config विकल्प, उदा। आपके my.cfg में:

[mysqld]
ft_min_word_len=3

(फिर MySQLd को रोकें/शुरू करें और पूर्ण टेक्स्ट इंडेक्स का पुनर्निर्माण करें।)

दूसरे, MySQL द्वारा '+' को एक अक्षर नहीं माना जाता है। आप इसे एक अक्षर बना सकते हैं, लेकिन इसका मतलब है कि आप 'fish+chips' स्ट्रिंग में 'fish' शब्द की खोज करने में सक्षम नहीं होंगे, इसलिए कुछ देखभाल की आवश्यकता है। और यह मामूली नहीं है:इसके लिए MySQL को पुन:संकलित करने या मौजूदा वर्ण सेट को हैक करने की आवश्यकता है। अनुभाग 11.8.6 दस्तावेज़ के।

हां, ऐसा कुछ एक सामान्य समाधान है:आप अपने 'वास्तविक' डेटा (बचने के बिना) को प्राथमिक, निश्चित तालिका में रख सकते हैं — आमतौर पर ACID अनुपालन के लिए InnoDB का उपयोग करते हुए। फिर एक सहायक MyISAM तालिका जोड़ी जा सकती है, जिसमें फुलटेक्स्ट सर्च बैट के लिए केवल उलझे हुए शब्द होते हैं। आप इस दृष्टिकोण का उपयोग करके स्टेमिंग का एक सीमित रूप भी कर सकते हैं।

एक अन्य संभावना उन खोजों का पता लगाना है जो MySQL नहीं कर सकता, जैसे कि केवल छोटे शब्दों या असामान्य वर्णों वाले, और केवल उन खोजों के लिए एक सरल-लेकिन-धीमी LIKE या REGEXP खोज पर वापस आते हैं। इस मामले में आप शायद ft_stopword_file एक खाली स्ट्रिंग के लिए, क्योंकि इसमें सब कुछ विशेष के रूप में भी लेना व्यावहारिक नहीं है।



  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 में LOWER () फ़ंक्शन कैसे काम करता है

  2. CentOS7 में, MySQL प्रारंभ नहीं कर सकता

  3. PHP को न्यूलाइन पढ़ने के लिए कैसे बाध्य करें और . के रूप में रिटर्न करें

  4. MySQL - एक ही तालिका से पंक्ति के आधार पर योग स्तंभ मान(रों)

  5. Apache2, PHP5 और MySQL4 के साथ Windows XP में वेब सर्वर स्थापित करें - भाग 4