Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

PHP और MySQL का उपयोग करके संबंधित या समान पोस्ट बनाना

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 में बदला गया



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. रिलेशनल डेटाबेस मैनेजमेंट सिस्टम (RDBMS):MSSQL बनाम MySQL

  2. अमान्य डेटाटाइम प्रारूप:1292 गलत डेटाटाइम मान

  3. MySQL के लिए स्केलिंग समाधान (प्रतिकृति, क्लस्टरिंग)

  4. मैसकल में किसी संख्या को शब्द में बदलना

  5. एकाधिक कॉलम पर FULLTEXT अनुक्रमणिका कैसे बनाएं?