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

How-to:Ranking wyników wyszukiwania

możesz to osiągnąć w jednym zapytaniu, używając 'UNION ALL' w MySQL.

Po prostu przejdź przez tokeny w PHP, tworząc UNION ALL dla każdego tokena:

np. jeśli tokeny to „x”, „y” i „z”, zapytanie może wyglądać mniej więcej tak

SELECT * FROM `entries` 
WHERE token like "%x%" union all 
    SELECT * FROM `entries` 
    WHERE token like "%y%" union all 
        SELECT * FROM `entries` 
        WHERE token like "%z%" ORDER BY score ect...

Klauzula zamówienia powinna działać na całym zestawie wyników jako jeden, czego potrzebujesz.

Pod względem wydajności nie będzie tak szybko (zgaduję), jednak w przypadku baz danych głównym obciążeniem pod względem szybkości jest często wysyłanie zapytania do silnika bazy danych z PHP i odbieranie wyników. Dzięki tej technice dzieje się to tylko raz, a nie raz na token, więc wydajność wzrośnie, po prostu nie wiem, czy to wystarczy.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysqli UPDATE SET WHERE błąd składni

  2. Wyłącz notację naukową MySQL

  3. Jak sprawdzić stan połączenia MySQL w C#

  4. Jak znaleźć określone wartości szesnastkowe i wartości Char() w SELECT w MySQL?

  5. Tabela bazy danych nie istnieje zgodnie z kompilatorem Android Studio