sql >> Databasteknik >  >> RDS >> Mysql

Så här gör du:Rangordna sökresultat

du kan uppnå detta i en fråga med 'UNION ALL' i MySQL.

Gå bara igenom tokens i PHP och skapa en UNION ALL för varje token:

t.ex. om tokens är 'x', 'y' och 'z' kan din fråga se ut ungefär så här

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

Ordningssatsen bör fungera på hela resultatuppsättningen som en, vilket är vad du behöver.

När det gäller prestanda kommer det inte att gå så snabbt (gissar jag), men med databaser är den huvudsakliga overheaden när det gäller hastighet ofta att skicka frågan till databasmotorn från PHP och ta emot resultaten. Med den här tekniken händer detta bara en gång istället för en gång per token, så prestandan kommer att öka, jag vet bara inte om det kommer att räcka.



  1. Utförande av rekursiva lagrade procedurer i MYSQL för att få hierarkisk data

  2. Tabell- eller kolumnnamn kan inte börja med numeriskt?

  3. Få alla tabellnamn för en viss databas genom SQL-fråga?

  4. psql - spara resultat av kommandot till en fil