2009-09-17 17 views
9

मैं MySQL पूर्ण पाठ खोज के साथ काम कर रहा हूं लेकिन यह उन परिस्थितियों में कमी महसूस करता है जहां आपकी स्ट्रिंग किसी फ़ील्ड के भीतर किसी शब्द का हिस्सा है। यदि मेरा क्षेत्र "न्यूयॉर्क टाइम्स" है और मैं "टाइम" की खोज करता हूं तो मुझे कोई परिणाम नहीं मिलता है। वहाँ किसी भी तरह से है कि मैं इस मुद्दे को हल करने के लिए अपने पूर्ण पाठ खोज सेट कर सकते हैं हैMYSQL फुलटेक्स्ट खोज और LIKE

SELECT * FROM ___ WHERE 'string' LIKE %searchterm% 

: इस को हल करने के hackish तरीका, एक है कि एक पूर्ण पाठ खोज और करता है अन्य करता है दो प्रश्नों स्थापित करने के लिए है तो मुझे अतिरिक्त क्वेरी चलाने की ज़रूरत नहीं है?

उत्तर

2

मैंने मूल रूप से Sphinx के पक्ष में माईएसक्ल की पूर्ण पाठ खोज पर छोड़ दिया है - एक समर्पित पूर्ण-पाठ खोज इंजन जो MySQL के नेटवर्क प्रोटोकॉल को लागू करता है ताकि आप इसे अपने ग्राहकों और एक MySQL सर्वर के बीच "हस्तक्षेप" कर सकें, कुछ भी नहीं खोना और समृद्ध, गंभीर पूर्ण-पाठ क्षमताओं को प्राप्त करना। हो सकता है कि यह आपकी आवश्यकताओं के लिए उपयुक्त नहीं है (जिसे आप पूरी तरह से व्यक्त नहीं करते हैं), लेकिन मुझे लगता है कि कम से कम काम की जांच कर रही है!

+0

कूल धन्यवाद बहुत कुछ। बस मेरे प्रश्न को स्पष्ट करने के लिए। मेरे पास एक ऐसा क्षेत्र है जो न्यूयॉर्क दिग्गज है। अगर मैं इसे पूर्ण टेक्स्ट इंडेक्स में जोड़ता हूं और फिर "विशाल" खोजता हूं तो कुछ भी नहीं आ जाएगा। इन मामलों में परिणामों को वापस करने के लिए मैं पूर्ण टेक्स्ट खोज का उपयोग कैसे कर सकता हूं? मैं स्फिंक्स की जांच करूंगा। –

+0

@Russ के सिर के लिए धन्यवाद, आप ** stemming ** प्लगइन्स की तलाश में हैं (mysql 5.1 के लिए, 5.0 ने उनका समर्थन नहीं किया), उदा। http://www.mnogosearch.org/doc/msearch-udmstemmer.html। –

+0

बहुत बहुत धन्यवाद एलेक्स, मैं मदद की सराहना करता हूं। दुर्भाग्यवश, मेरे हाथ बंधे हैं और मैं mysql 5.1 में अपग्रेड नहीं कर सकता। लेकिन मैं थोड़ा उलझन में हूं, मैं समझता हूं कि 5.0 में मैं ग्राहक पार्सर्स का उपयोग नहीं कर सकता लेकिन क्या इसका मतलब यह है कि 5.0 में स्टेमिंग करने के लिए कोई मूल mysql विधि नहीं है? –

6

आप अपनी पूर्ण पाठ खोज में जंगली कार्ड का उपयोग कर सकते हैं। अधिक जानकारी here

SELECT * FROM _____ WHERE MATCH (title) AGAINST ('time*' IN BOOLEAN MODE); 
+0

हम्म अच्छा अच्छा है। मैंने इसके बारे में नहीं सोचा था। केवल मुद्दा यह है कि यह एक खराब विकल्प है क्योंकि यह "समय" और इस तरह के शब्दों से मेल नहीं खाएगा। मैंने एक पूर्ण टेक्स्ट खोज और एक पसंद% ...% स्ट्रिंग मिलान खोज करने का विकल्प चुना। यह थोड़ा कठिन है और अतिरिक्त पूछताछ है लेकिन काफी ठोस परिणाम उत्पन्न करता है। –

+0

यह तब भी मदद नहीं करता जब किसी खोज को दूसरी तरफ जाने की आवश्यकता होती है। उदाहरण के लिए, डेटा में "आईपैड" शब्द शामिल है लेकिन उपयोगकर्ता "आईपैड" की खोज करता है। वाइल्डकार्ड इस मामले में मदद नहीं करेगा। – Vincent

+0

@ अर्नोल्ड 'LIKE% ...%' आपके प्रदर्शन को मार देगा, क्योंकि एसक्यूएल इंडेक्स का उपयोग नहीं करेगा। यदि आप उस दृष्टिकोण के लिए जाते हैं, तो आपको शायद पूर्ण टेक्स्ट खोज की आवश्यकता नहीं होगी। – PeerBr

संबंधित मुद्दे