Sandsynligvis er denne tilgang til at udføre en vægtet søgning / resultater egnet til 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 bruger en udvalgt underforespørgsel til at angive vægten for at bestille resultaterne. I dette tilfælde tre felter gennemsøgt, kan du angive en vægt pr. felt. Det er sandsynligvis billigere end fagforeninger og sandsynligvis en af de hurtigere måder kun i almindelig MySQL.
Hvis du har flere data og har brug for resultater hurtigere, kan du overveje at bruge noget som Sphinx eller Lucene.