这个问题在这里已经有了答案:
MySQL - How to ORDER BY RELEVANCE? INNODB Table
(1 个回答)
8年前关闭。
我有一张产品表,我想在其中搜索产品。
目前,查询如下所示:
$query = "SELECT * FROM `products` WHERE `name` LIKE '%$qr_search%' LIMIT 0,$products_per_single_search";
如您所见,我使用
%SOME_TEXT%
方法,很好,但还不够好。如果用户搜索
pen
他会得到如下结果:等等。我并不是说获得这些结果无关紧要,但我想在其中进行一些排序,因此最相关的结果将首先显示。
有没有更好的机制呢?
最佳答案
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
关于mysql - 最有效的搜索查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18809607/