sql >> Databáze >  >> RDS >> Mysql

Výsledek vyhledávání klíčových slov a hodnocení

Toto funguje jistě:

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

Položky z databáze jsou seřazeny sestupně. Takže nejrelevantnější dostane první místo.

poznámka:Toto funguje dobře, pouze když je počet klíčových slov malý. Kvůli 3x kontrole délky pro každé klíčové slovo. Takže doba odezvy na větších stolech a více klíčových slovech by mohla být trochu jiná;)




  1. Jak naplánovat dotaz MySQL?

  2. Zahodit jedinečný klíč muli-column bez vypuštění cizího klíče?

  3. Jak získat připojovací řetězec z databáze

  4. PHP související s PDO:Aktualizace příkazu SQL neaktualizuje obsah databáze