2

我有一张产品表,我想在其中搜索产品。目前,查询如下所示:

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

如您所见,我使用的%SOME_TEXT%方法很好,但还不够好。

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

  • 便士
  • 彭特拉
  • somewordPENword

等等。我并不是说获得这些结果无关紧要,但我想在其中进行一些排序,因此最相关的结果将首先显示。

有没有更好的机制呢?

4

1 回答 1

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
于 2013-09-15T06:42:34.110 回答