Waarschijnlijk is deze benadering van het doen van een gewogen zoekopdracht / resultaten geschikt voor u:
SELECT *,
IF(
`name` LIKE "searchterm%", 20,
IF(`name` LIKE "%searchterm%", 10, 0)
)
+ IF(`description` LIKE "%searchterm%", 5, 0)
+ IF(`url` LIKE "%searchterm%", 1, 0)
AS `weight`
FROM `myTable`
WHERE (
`name` LIKE "%searchterm%"
OR `description` LIKE "%searchterm%"
OR `url` LIKE "%searchterm%"
)
ORDER BY `weight` DESC
LIMIT 20
Het gebruikt een selecte subquery om het gewicht te geven voor het ordenen van de resultaten. In dit geval drie velden doorzocht, u kunt een gewicht per veld opgeven. Het is waarschijnlijk minder duur dan vakbonden en waarschijnlijk een van de snellere manieren in gewone MySQL.
Als je meer gegevens hebt en sneller resultaten nodig hebt, kun je overwegen iets als Sphinx of Lucene te gebruiken.