进行加权搜索/结果搜索的这种方法可能适合您:
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` DESCLIMIT 20
它使用选择子查询来提供权重以对结果进行排序。在这种情况下,搜索了三个字段,您可以为每个字段指定权重。它可能比联合会便宜,并且可能只是纯MySQL中更快的方式之一。
如果您有更多数据并且需要更快的结果,则可以考虑使用Sphinx或Lucene之类的东西。



