Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wyniki wyszukiwania słów kluczowych i rankingu

To na pewno działa:

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

Pozycje z bazy są następnie sortowane malejąco. Więc najtrafniejsze zajmuje pierwsze miejsce.

uwaga:działa to dobrze tylko wtedy, gdy liczba słów kluczowych jest niewielka. Z powodu sprawdzania 3 razy długości każdego słowa kluczowego. Tak więc czas odpowiedzi przy większych tabelach i większej liczbie słów kluczowych będzie nieco inny;)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak połączyć ciągi z podzapytania w jeden wiersz w mysql?

  2. jak pobrać powiadomienie z bazy danych z różnymi typami powiadomień

  3. Jak podzielić informacje mySQL, aby były wyświetlane w kolumnach HTML

  4. Dlaczego MySQL zwraca niektóre zmienne w notacji naukowej, a inne nie?

  5. Jak naprawić bazy danych i tabele MySQL