最有效的搜索查询

时间:2013-09-15 06:37:32

标签: mysql sql mysqli

我有一张产品表,我想在那里搜索产品。 在这个问题上,查询如下所示:

$query = "SELECT * FROM `products` WHERE `name` LIKE '%$qr_search%' LIMIT 0,$products_per_single_search";

正如您所看到的,即时通讯使用%SOME_TEXT%方法,这很好但不够好。

如果用户搜索pen,他会得到以下结果:

  • peny
  • 的Pentra
  • somewordPENword

等等。我并不是说拥有这些结果是无关紧要的,但我想在那里做一些订单,所以最相关的结果将首先显示。

有没有更好的机制呢?

1 个答案:

答案 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