Er det mulig å sortere basert på dette i MySQL?

Jeg har begynt å jobbe med et internt søkescript, og mysql-queryen jeg bruker for å søke med ser for øyeblikket omtrent slik ut:

Kode:
$q = $_GET['q'];
$query = 'SELECT tittel, tekst, rating FROM tabellnavn WHERE tittel LIKE \'%'.addslashes($q).'%\' OR tekst LIKE \'%'.addslashes($q).'%\' ORDER BY rating DESC';

Denne queryen henter isåfall alle treff som inneholder søkestrengen, og viser de mest populære treffene øverst i søkeresultatet. LIMIT og sånne ting har jeg også, men det er mindre relevant for dette spørsmålet.

Problemet er at de mest populære treffene ikke alltid er de mest relevante. Dersom jeg har en artikkel som heter «Risotto for dummies» og en artikkel som heter «Gjør livet bedre med friske grønnsaker» vil den siste artikkelen komme først i et søk etter «ris» dersom den er mest populær. Dersom jeg har en artikkel som heter «Ari Behn har gitt ut ny bok» og en artikkel som heter «Ringpermen er en legendarisk oppfinnelse» risikerer jeg at sistnevnte kommer først i et søk etter «ari». Og så videre ...

En ting som KAN gjøre søkeresultatene mer relevante, og som jeg kunne tenke meg å gjøre, er om jeg sorterer det slik at i et søk etter «ari» FØRST kommer alle de treffene hvor tittelen *begynner med* de tre bokstavene, og deretter kommer alle de andre treffene. Jada, jeg vet at jeg kan få til dette med PHP, men er det en måte å gjøre dette på direkte i MySQL-queryen?
 

Nextri

Rebel
Du bør heller bruke MATCH AGAINST istedenfor WHERE tittel LIKE, når du skal søke i mysql

søk etter mysql MATCH AGAINST i google, så finner du ut hvordan d gjøres.

Ved å bruke match against, kan du sortere etter hvor relevant treffene er.
 

Nextri

Rebel
et annet alternativ, hvis du vil lage en skikkelig robust søkefunksjon er å ta en titt på sphinxsearch.com

sphinx bruker mye mindre ressurser enn mysql når d kommer til søk
 
Topp