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

खोज परिणामों की रैंकिंग के लिए SQL के साथ सहायता चाहिए

मुझे उपरोक्त समस्या का एक कार्यशील समाधान मिल गया है, और मैं इसे यहां पोस्ट कर रहा हूं, अगर किसी और को भी इसी तरह की समस्या का अनुभव होता है।

समाधान केस स्टेटमेंट के बजाय उप-चयन का उपयोग करना है। यहाँ कोड का उपरोक्त डाइवेट है, ठीक किया गया है। (मुझे नहीं पता कि यह सबसे अच्छा या सबसे कुशल समाधान है, लेकिन इसने मेरे लिए समस्या को कुछ समय के लिए ठीक कर दिया है, और ऐसा लगता है कि खोज परिणाम यथोचित रूप से जल्दी वापस आ गए हैं।)

SELECT 
    exercises.ID AS ID,
    exercises.title AS title, 
    (
        (
            SELECT COUNT(1) 
            FROM searchtags 
            LEFT JOIN exerciseSearchtags 
            ON exerciseSearchtags.searchtagID = searchtags.ID 
            WHERE searchtags.title LIKE CONCAT('%',?,'%') 
            AND exerciseSearchtags.exerciseID = exercises.ID
        )+
        (
            SELECT COUNT(1) 
            FROM searchtags 
            LEFT JOIN exerciseSearchtags 
            ON exerciseSearchtags.searchtagID = searchtags.ID 
            WHERE searchtags.title LIKE CONCAT('%',?,'%') 
            AND exerciseSearchtags.exerciseID = exercises.ID
        )+
        ...etc...
        (
            SELECT COUNT(1) 
            FROM searchtags 
            LEFT JOIN exerciseSearchtags 
            ON exerciseSearchtags.searchtagID = searchtags.ID 
            WHERE searchtags.title LIKE CONCAT('%',?,'%') 
            AND exerciseSearchtags.exerciseID = exercises.ID
        )
    ) AS relevance

FROM 
    exercises

LEFT JOIN exerciseSearchtags
    ON exerciseSearchtags.exerciseID = exercises.ID 

LEFT JOIN searchtags
    ON searchtags.ID = exerciseSearchtags.searchtagID

WHERE
    searchtags.title LIKE CONCAT('%',?,'%') OR
    searchtags.title LIKE CONCAT('%',?,'%') OR
    ...etc...
    searchtags.title LIKE CONCAT('%',?,'%') 

GROUP BY 
    exercises.ID                

ORDER BY 
    relevance DESC


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. अगली बार के अंतराल को क्वेरी करें

  2. MySQL को MS Access में कनवर्ट करना

  3. एक अलग तालिका के चयन (गिनती) के आधार पर mySQL अद्यतन तालिका

  4. MySQL कार्यक्षेत्र क्या है?

  5. MySQL IF शर्तों के साथ जुड़ें