2011-05-28 75 views
1

我做了一個mysql/php搜索引擎,其中我添加了帶有關鍵字google搜索引擎的谷歌網址和另外一個帶有關鍵字yahoo搜索引擎的雅虎網址。如果我在搜索框上輸入谷歌搜索引擎,我該如何讓谷歌網址首先出現?如何使精確關鍵字搜索首先出現?

這是代碼:

//connect to database 
    mysql_connect("","",""); 
    mysql_select_db(""); 

    //explode out search term 
    $search_exploded = explode(" ",$search); 

    foreach($search_exploded as $search_each) 
    { 

     //construct query 
    $x++; 
    if ($x==1) 
    $construct .= "Keywords LIKE '%$search_each%'"; 
    else 
    $construct .= " OR Keywords LIKE '%$search_each%'"; 

    } 

    //echo outconstruct 
    $constructx = "SELECT * FROM searchengine WHERE $construct"; 

    $construct = "SELECT * FROM searchengine WHERE $construct LIMIT $s,$e"; 
    $run = mysql_query($constructx); 

    $foundnum = mysql_num_rows($run); 


    $run_two = mysql_query("$construct"); 

    if ($foundnum==0) 
    echo "No results found for <b>$search</b>"; 
    else 
+2

我希望沒有人想要搜索任何帶有撇號的東西。 – icktoofay 2011-05-28 21:13:35

+1

小鮑比桌子? :D – Halcyon 2011-05-28 21:14:16

回答

0
  1. 要查找條目數,您可以使用SELECT count(*)而不是mysql_num_rows進行完整查詢。
  2. 要對結果進行排序,您需要在查詢中使用「ORDER BY」,以及一些字段,這將成爲排序的標準。你的情況,你可以寫
    $construct = "SELECT * FROM searchengine WHERE $construct ORDER BY Keywords LIMIT $s,$e ";

而且不要忘了淨化你的$搜索。
$search = mysql_real_escape_string($search);

+0

您發佈的代碼帶給我一個php錯誤:( – mofhd 2011-05-28 21:32:43

+0

@Rekos,對不起,編輯 – 2011-05-28 21:38:06

+0

如果我用($構造=「選擇*從searchengine WHERE $構造極限$ s,$ e ORDER BY關鍵字」替換原始代碼「 ;)我得到一個(解析錯誤:語法錯誤,意想不到的T_VARIABLE在52行/home/a5083847/public_html/search.php)PHP錯誤 – mofhd 2011-05-28 21:39:16

2

這裏最好的辦法是不使用LIKE,但使用MySQL的FULLTEXT索引。爲此,您需要在要搜索的列上創建一個FULLTEXT索引。

ALTER TABLE searchengine ADD FULLTEXT(keywords);

要查詢,做這樣的事情:

SELECT * FROM searchengine WHERE MATCH (keywords) AGAINST ("$searchterm");

您可以結合不同的MATCH AGAINST查詢來滿足所有的關鍵字。此外,您可以將MATCH AGAINST位置於查詢的SELECT子句中。這將返回一個分數,然後您可以使用它來對結果進行排名。

此外,您甚至可以在運行查詢之前執行一些干擾工作。使用由各種MATCH運算符生成的分數,您可以對整個單詞進行排序,使其高於詞幹單詞。

+0

SELECT * FROM searchengine WHERE MATCH(keywords)AGAINST(「$ searchterm」); 此代碼無效。 – mofhd 2011-05-29 05:58:10

+0

錯誤是什麼?你是否首先添加了FULLTEXT索引? – 2011-06-30 22:06:30