दुर्भाग्य से आप MySQL पूर्ण-पाठ अनुक्रमणिका का उपयोग करके ऐसा नहीं कर सकते। आप '*nited states'
. को पुनः प्राप्त नहीं कर सकते इंडेक्स से तुरंत क्योंकि बाएं वर्ण इंडेक्स का सबसे महत्वपूर्ण हिस्सा हैं। हालांकि, आप कर सकते हैं खोज 'United Sta*'
।
// the only possible wildcard full-text search in MySQL
WHERE MATCH(column) AGAINST ('United Sta*' IN BOOLEAN MODE)
पूरे शब्दों को वाक्यों में खोजते समय MySQL का पूर्ण-पाठ सबसे अच्छा प्रदर्शन करता है - यहां तक कि वह कभी-कभी चूस सकता है। अन्यथा, मैं एक बाहरी पूर्ण-पाठ इंजन का उपयोग करने का सुझाव दूंगा जैसे Solr या Sphinx . मुझे लगता है कि Sphinx उपसर्ग और प्रत्यय वाइल्डकार्ड की अनुमति देता है, दूसरों के बारे में निश्चित नहीं है।
आप MySQL के LIKE
. पर वापस जा सकते हैं खंड, लेकिन फिर से, चल रही क्वेरी जैसे LIKE '%nited states'
या LIKE '%nited Stat%'
, प्रदर्शन पर भी असर पड़ेगा, क्योंकि यह पहले कुछ वर्णों पर अनुक्रमणिका का उपयोग नहीं कर सकता है। 'United Sta%'
और 'Unit%States'
ठीक है क्योंकि अनुक्रमणिका का उपयोग ज्ञात वर्णों के पहले समूह के विरुद्ध किया जा सकता है।
MySQL की पूर्ण-पाठ अनुक्रमणिका का उपयोग करते हुए एक और महत्वपूर्ण चेतावनी स्टॉप-वर्ड सूची और न्यूनतम शब्द लंबाई सेटिंग . उदाहरण के लिए, एक साझा होस्टिंग वातावरण पर, आप 4-वर्णों से अधिक या उसके बराबर शब्दों तक सीमित रहेंगे। इसलिए 'गूगल' पाने के लिए 'गू' खोजना विफल हो जाएगा। स्टॉप-वर्ड लिस्ट 'और', 'शायद' और 'बाहर' जैसे सामान्य शब्दों को भी अस्वीकार करता है - वास्तव में, 548 स्टॉप-वर्ड्स एक साथ हैं! फिर से, यदि साझा होस्टिंग का उपयोग नहीं कर रहे हैं, तो इन सेटिंग्स को संशोधित करना अपेक्षाकृत आसान है, लेकिन यदि आप हैं, तो आप कुछ डिफ़ॉल्ट सेटिंग्स से नाराज़ हो जाएंगे।