Mysql
 sql >> Datenbank >  >> RDS >> Mysql

How-to:Rangfolge der Suchergebnisse

Sie könnten dies in einer Abfrage mit 'UNION ALL' in MySQL erreichen.

Durchlaufen Sie einfach die Tokens in PHP und erstellen Sie eine UNION ALL für jedes Token:

Wenn die Token beispielsweise 'x', 'y' und 'z' sind, könnte Ihre Abfrage etwa so aussehen

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

Die order-Klausel sollte auf der gesamten Ergebnismenge als eine funktionieren, was Sie brauchen.

In Bezug auf die Leistung wird es nicht so schnell sein (schätze ich), aber bei Datenbanken besteht der Hauptaufwand in Bezug auf die Geschwindigkeit häufig darin, die Abfrage von PHP an die Datenbank-Engine zu senden und die Ergebnisse zu erhalten. Mit dieser Technik passiert das nur einmal statt einmal pro Token, also wird die Leistung steigen, ich weiß nur nicht, ob es ausreicht.