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

कीवर्ड खोज और रैंक परिणाम

यह निश्चित रूप से काम करता है:

$searchCondition = "description LIKE '%" . implode("%' OR description LIKE '%", $searchTerms) . "%'";
$orderCondition = array();
foreach ($searchTerms as $word) {
    $orderCondition[] = "(length(description)-length(replace(description,\"".$word."\",\"\")))/length(\"".$word."\")";
}
$orderConditionString = "(".implode(" + ", $orderCondition).")";

$query = "SELECT description FROM table1 WHERE $searchCondition ORDER BY $orderConditionString DESC";

डेटाबेस से आइटम को अवरोही क्रम में क्रमबद्ध किया जाता है। तो सबसे प्रासंगिक को पहला स्थान मिलता है।

नोट:यह तभी ठीक काम करता है जब की-वर्ड्स की संख्या कम हो। प्रत्येक कीवर्ड के लिए लंबाई के लिए 3 बार चेक करने के कारण। तो बड़ी टेबल और अधिक कीवर्ड पर प्रतिक्रिया समय थोड़ा अलग हो सकता है;)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CDbMigration का उपयोग करके तालिका बदलें या ऑटो-इन्क्रीमेंट रीसेट करें

  2. सुनिश्चित करें कि PHP सरणी में केवल अनुक्रमिक कुंजियाँ हैं

  3. एसक्यूएल जहां कोई भी कॉलम एक मान के बराबर होता है

  4. चेतावनी:mysqli_query() पैरामीटर 1 को mysqli होने की अपेक्षा करता है, संसाधन दिया गया है

  5. MySQL में बाइनरी डेटा सम्मिलित करना (तैयार किए गए स्टेटमेंट के बिना)