यह कोई साधारण प्रश्न नहीं है। आपका सबसे अच्छा दांव कुछ प्रकार के पूर्ण टेक्स्ट खोजका उपयोग करना है। ए> . फुलटेक्स्ट सर्च को स्टॉपवर्ड्स के लिए कॉन्फ़िगर किया जा सकता है (वे शब्द जो खोज से छोड़े गए हैं - जैसे शब्द the
) और न्यूनतम शब्द लंबाई सीमा भी हो सकती है (कुछ वर्णों से कम लंबे शब्दों को भी खोज से हटा दिया जाता है।
हालांकि, अगर आप बस उपयोग करते हैं
SELECT * FROM testtable
WHERE MATCH (sentence)
AGAINST ('ISBN number on site');
फिर MySQL न केवल उस मूल्य के साथ रिकॉर्ड लौटाएगा, जिसे आप ढूंढ रहे थे, बल्कि वे रिकॉर्ड जिनमें केवल कुछ शब्द हैं, और अलग-अलग क्रम में हैं। आपने जो दिखाया वह संभवत:सर्वोच्च रैंकिंग वाले में से एक होगा, लेकिन इसकी कोई गारंटी नहीं है कि यह सर्वोच्च रैंक वाला होगा।
आप बूलियन फुलटेक्स्ट सर्च
का उपयोग करना चाह सकते हैं। और प्रीपेन्ड करें +
प्रत्येक खोज शब्द के लिए MySQL को केवल उन अभिलेखों को वापस करने के लिए मजबूर करने के लिए जिनमें सभी खोज शब्द मौजूद हैं:
SELECT * FROM testtable
WHERE MATCH (sentence)
AGAINST ('+ISBN +number +on +site' IN BOOLEAN MODE);
लेकिन, on
या तो एक स्टॉपवर्ड होना चाहिए (यह डिफ़ॉल्ट स्टेपवर्ड सूचियों पर है) या कम से कम शब्द लंबाई होना चाहिए, इसलिए खोज अभिव्यक्ति से छोड़ा जाना चाहिए (आपको कोई परिणाम वापस नहीं मिलेगा):
SELECT * FROM testtable
WHERE MATCH (sentence)
AGAINST ('+ISBN +number +site' IN BOOLEAN MODE);
मुझे पता है कि इसके लिए खोज अभिव्यक्ति में बदलाव की आवश्यकता है, हालांकि यह आपको MySQL की अंतर्निहित कार्यक्षमता का उपयोग करके सर्वोत्तम परिणाम प्राप्त करेगा।
विकल्प अन्य पूर्ण पाठ खोज इंजनों का उपयोग करना है, जैसे कि sphinx आपके लिए खोज करने के लिए।