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

Jak na to:Hodnocení výsledků vyhledávání

můžete toho dosáhnout v jednom dotazu pomocí 'UNION ALL' v MySQL.

Jednoduše projděte tokeny v PHP a vytvořte UNION ALL pro každý token:

např. pokud jsou tokeny 'x', 'y' a 'z', může váš dotaz vypadat nějak takto

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...

Klauzule objednávky by měla fungovat s celou sadou výsledků jako jedna, což je to, co potřebujete.

Z hlediska výkonu to nebude až tak rychlé (hádám), nicméně u databází je hlavní režií z hlediska rychlosti často odeslání dotazu do databázového stroje z PHP a příjem výsledků. S touto technikou se to stane pouze jednou místo jednou na token, takže výkon se zvýší, jen nevím, jestli to bude stačit.



  1. Java Android AsyncTask + připojení mysql

  2. Spusťte dotaz SQL při spuštění služby MySQL

  3. určení znakové sady tabulky / databáze?

  4. Escape znak v SQL Server