sql >> Database >  >> RDS >> Mysql

Zoekwoord zoeken en rangschikken resultaat

Dit werkt zeker:

$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";

De items uit de database worden vervolgens aflopend gesorteerd. Dus de meest relevante krijgt de eerste plaats.

opmerking:dit werkt alleen goed als het aantal trefwoorden klein is. Vanwege het 3 keer controleren van de lengte voor elk trefwoord. Dus de responstijd op grotere tabellen en meer zoekwoorden kan een beetje anders zijn;)




  1. Update Database Veld Foutcode Ontsteker

  2. MySQL SIGN() Functie – Ontdek of een getal positief of negatief is in MySQL

  3. Website down en Twitter-feed

  4. Hoe alle beperkingen voor externe sleutels in SQL Server-database uit te schakelen - SQL Server / TSQL-zelfstudie, deel 77