यह निश्चित रूप से काम करता है:
$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 बार चेक करने के कारण। तो बड़ी टेबल और अधिक कीवर्ड पर प्रतिक्रिया समय थोड़ा अलग हो सकता है;)