可能重複:
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