Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como:Classificar resultados de pesquisa


você pode conseguir isso em uma consulta usando 'UNION ALL' no MySQL.

Basta percorrer os tokens em PHP criando um UNION ALL para cada token:

por exemplo, se os tokens forem 'x', 'y' e 'z' sua consulta pode ser algo assim
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...

A cláusula de ordem deve operar em todo o conjunto de resultados como um, que é o que você precisa.

Em termos de desempenho, não será tão rápido (suponho), no entanto, com bancos de dados, a principal sobrecarga em termos de velocidade geralmente é enviar a consulta para o mecanismo de banco de dados do PHP e receber os resultados. Com essa técnica isso só acontece uma vez ao invés de uma vez por token, então o desempenho vai aumentar, só não sei se será suficiente.