Förmodligen är det här tillvägagångssättet att göra en viktad sökning/resultat lämplig för dig:
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
Den använder en utvald underfråga för att ange vikten för att beställa resultaten. I det här fallet sökte tre fält över, du kan ange en vikt per fält. Det är förmodligen billigare än fackföreningar och förmodligen ett av de snabbare sätten endast i vanlig MySQL.
Om du har mer data och behöver resultat snabbare kan du överväga att använda något som Sphinx eller Lucene.