मैं इस तरह की एक साधारण MySQL क्वेरी का उपयोग कर रहा हूं:
SELECT * FROM myTable WHERE field LIKE 'aaa%' ORDER BY field2

मेरे पास "फ़ील्ड" पर एक पूर्ण-पाठ अनुक्रमणिका है, और फिर भी यह बहुत धीमी है। मैं समझ गया कि मैच का उपयोग करने का एक विकल्प है। क्या अंतर है? कैसे? मेरे उपयोग के लिए सबसे अच्छा तरीका क्या है? ध्यान दें कि मैं "%" का उपयोग "आआ" से शुरू होने वाली हर चीज़ के लिए कर रहा हूँ

अपडेट करें: मैंने इस तरह कुछ उपयोग कर समाप्त कर दिया है: <कोड>चुनें
*, मैच (नाम) के खिलाफ ('ए*' बूलियन मोड में) स्कोर के रूप में
से
उपयोगकर्ताओं जहां
मैच (नाम) के खिलाफ ('ए*' बूलियन मोड में)
स्कोर द्वारा आदेश, लोकप्रियता DESC LIMIT 4

एक चीज जिसे मैं बदलना चाहता हूं, वह पहले SCORE द्वारा और फिर मेरे क्षेत्र की लोकप्रियता के आदेश के कारण नहीं है, और इसके बजाय एक साधारण वजन फ़ंक्शन द्वारा आदेश दिया गया है, जैसे 0.5*SCORE + 0.5*लोकप्रियता। कैसे?

10
Noam 14 जुलाई 2011, 19:26

1 उत्तर

सबसे बढ़िया उत्तर

LIKE पूर्ण-पाठ अनुक्रमणिका का उपयोग नहीं करता है। फुलटेक्स्ट इंडेक्स का उपयोग करने के लिए, आपको मैच का उपयोग करना होगा (जैसा आपने कहा था):

SELECT * 
FROM myTable 
WHERE MATCH(field) AGAINST ('aaa*' IN BOOLEAN MODE)
ORDER BY field2

MySQL मैन्युअल में पूर्ण-पाठ खोज कार्य

12
Jacob 14 जुलाई 2011, 19:45
दिलचस्प .. क्या किसी के पास डीबी 2 या सिबेस के लिए कोई समकक्ष प्रश्न है? Google बहुत मदद नहीं कर रहा है।
 – 
user606723
14 जुलाई 2011, 19:38
इस लेख पर एक नज़र डालें: DB2 टेक्स्ट के साथ पूर्ण-पाठ खोज खोजें
 – 
Jacob
14 जुलाई 2011, 19:39
मैंने अपनी क्वेरी को "ऑर्डर बाय" के साथ अपडेट किया है। मैं इसे कैसे जोड़ सकता हूं?
 – 
Noam
14 जुलाई 2011, 19:43
वैसे ही आपने अपनी क्वेरी में किया होगा;)
 – 
Jacob
14 जुलाई 2011, 19:44
1
ORDER BY (0.5*SCORE + 0.5*popularity) को वास्तव में काम करना चाहिए
 – 
Jacob
14 जुलाई 2011, 20:04