可能的重复:
PHP MySQL 搜索和按相关性排序
你好,
我有一个包含多个列的表,其中包含名称、地址、公司等字段。假设有人搜索“microsoft john”。我希望首先出现包含“microsoft”的结果,然后是包含 john. 如果查询是“john microsoft”,反之亦然
我的PHP代码是:
$searchitems=explode(" ", $trimmed);
//print_r($searchitems);
$so = $_GET['so']=='2'?"2":"1";
$clause = $so=='2'?"AND":"OR";
include("dbconnect.php");
// Build SQL Query
$query = "select FirstName,LastName,course,Department,batch,City,companyjob,companylocation,
companyposition,coursename,institutename,coursename2,institutename2,coursename3,
institutename3 from alumni WHERE ";
for($i=0;$i<count($searchitems);$i++)
{
$queryappend .= "(FirstName LIKE '".$searchitems[$i]."%' OR LastName LIKE '".$searchitems[$i]."%'
OR City LIKE '".$searchitems[$i]."%' OR CountryorRegion LIKE '".$searchitems[$i]."%'
OR companyjob LIKE '".$searchitems[$i]."%' OR companylocation LIKE '".$searchitems[$i]."%'
OR coursename LIKE '".$searchitems[$i]."%' OR institutename LIKE '".$searchitems[$i]."%'
OR coursename2 LIKE '".$searchitems[$i]."%' OR institutename2 LIKE '".$searchitems[$i]."%')";
if($i<count($searchitems)-1) $queryappend .= $clause;
}
$query .=$queryappend;
问题是 MYSQL 是按 id 排序结果...这很有趣,因为一些更高价值的结果可能会卡在堆栈的深处。顺便说一句,phpmyadmin 搜索也有同样的缺陷。
请建议。