MySQL पूर्ण पाठ खोज का उपयोग करना MATCH (col1,col2,...) AGAINST (expr [search_modifier])
बात।
मान लें कि आपकी तालिका articles
है और आपको वर्तमान पोस्ट के शीर्षक के बारे में संबंधित पोस्ट खोजने की आवश्यकता है। इसे इस तरह करें:
SELECT *, MATCH(title, body) AGAINST('$CurrentPostTitle') AS score
FROM articles
WHERE MATCH(title, body) AGAINST('$CurrentPostTitle')
ORDER BY score DESC LIMIT 5
यह आपको शीर्ष 5 संबंधित पोस्ट देगा।
लेकिन पहले इस क्वेरी को चलाकर, उस तालिका के कॉलम के लिए पूर्ण पाठ खोज सक्षम करना याद रखें:
ALTER TABLE articles ADD FULLTEXT (title, body);
[संपादित करें]:क्यों न उपयोग करें LIKE
: ओपी को स्पष्टीकरण:
क्योंकि यह सही परिणाम नहीं देगा। मान लें कि आपका वर्तमान शीर्षक "1980 का संगीत" है और आप उस पर संबंधित पोस्ट चाहते हैं। अब, यदि आप LIKE
. का उपयोग करते हैं तभी केवल "1980 का संगीत" शब्दों के अनुक्रम वाले पद दिखाई देंगे। हालांकि, यदि आप MATCH ... AGAINST
. का उपयोग करते हैं , फिर संगीत या 1980 वाली पोस्ट दिखाई देंगी। साथ ही, वे पोस्ट जिनमें संगीत और 1980 दोनों शामिल हैं, शीर्ष पर दिखाई देंगी क्योंकि यह एक SCORE
देता है प्रत्येक परिणाम के लिए और हम उस स्कोर के आधार पर छाँट रहे हैं। मुझे आशा है कि यह स्पष्ट है।
[संपादित करें]:2 :
यदि आपके पास श्रेणियां हैं, तो आप AND Category = '$CurrentCategory'
. जोड़ सकते हैं SQL क्वेरी में where clause
अधिक विशिष्ट परिणाम प्राप्त करने के लिए।
[संपादित करें]:3:OP पूर्ण पाठ का उपयोग नहीं कर सकता :
यदि आप पूर्ण पाठ (किसी कारण से) का उपयोग नहीं कर सकते हैं, तो आप उसी श्रेणी से केवल 5 यादृच्छिक पोस्ट दिखा सकते हैं। चूंकि वे एक ही श्रेणी में हैं, वे कम से कम किसी न किसी तरह से संबंधित हैं:
SELECT *
FROM articles
WHERE Category = '$CurrentCategory'
LIMIT 5
संपादित सिंटैक्स:MySQL कोड में LIMIT को LIMIT में बदला गया