可能重复:
PHP MySQL Search And Order By Relevancy如何用字优先relevence订购MySQL的搜索结果
嗨,
我有包含像姓名字段数列的表,地址,公司等可以说有人搜索“微软约翰”。我希望包含“微软”的结果应该先出现,然后包含约翰的结果。反之,如果查询是“约翰·微软”
我的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搜索具有相同的缺陷。
请建议。
的不知道它在PHP或在phpMyAdmin一个缺陷。我在您的声明中根本没有看到__any__ ORDER BY子句,因此返回的订单将始终是纯粹的任意(甚至不能通过ID保证) – 2011-02-10 10:46:12
感谢Mark回复。我需要对搜索查询中的单词序列进行排序。正如我在我的示例中所说的,如果第一个$ searchitems是microsoft,则应首先显示包含microsoft的所有结果。 (微软的结果可能会被下一个$ searchitems等进一步排序)。我不能添加任何任意的顺序,因为这会破坏目的。 – hiprakhar 2011-02-10 10:53:36