我有一张产品表,我想在那里搜索产品。 在这个问题上,查询如下所示:
$query = "SELECT * FROM `products` WHERE `name` LIKE '%$qr_search%' LIMIT 0,$products_per_single_search";
正如您所看到的,即时通讯使用%SOME_TEXT%
方法,这很好但不够好。
如果用户搜索pen
,他会得到以下结果:
等等。我并不是说拥有这些结果是无关紧要的,但我想在那里做一些订单,所以最相关的结果将首先显示。
有没有更好的机制呢?
答案 0 :(得分:2)
MySql中没有内置相关性引擎。但是您可以添加此ORDER BY
子句以向订购添加一些规则:
ORDER BY CASE WHEN `name` LIKE '% $qr_search %' THEN 0
WHEN `name` LIKE '% $qr_search' THEN 1
WHEN `name` LIKE '$qr_search %' THEN 2
ELSE 3
END