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. Как да разбера кога моят docker mysql контейнер е готов и mysql е готов за приемане на заявки?

  2. Присъединяване на таблица към вложен масив [PHP/MYSQL]

  3. Как да разрешите грешка в MySQL Не можете да посочите целева таблица X за актуализиране в клауза FROM?

  4. Грешка с дублирана колона на MySQL само когато заявката е обвита като подзаявка

  5. Как да инсталирате MySQL 8 с Workbench на Windows 10