Mungkin pendekatan melakukan pencarian / hasil berbobot ini cocok untuk Anda:
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
Ini menggunakan subquery pilih untuk memberikan bobot untuk memesan hasil. Dalam hal ini tiga bidang dicari, Anda dapat menentukan bobot per bidang. Ini mungkin lebih murah daripada serikat pekerja dan mungkin salah satu cara yang lebih cepat hanya di MySQL biasa.
Jika Anda memiliki lebih banyak data dan membutuhkan hasil lebih cepat, Anda dapat mempertimbangkan untuk menggunakan sesuatu seperti Sphinx atau Lucene.