2012-11-15 21 views
0

我在嘗試實現全文搜索,因爲我想讓用戶鍵入一串文本並找到最匹配的結果。我已經使用在線教程做了一個,但他們似乎沒有工作。全文檢索不起作用

這裏是數據庫創建語句: 分隔符$$

CREATE TABLE `word_list` (
    `item_id` int(11) NOT NULL, 
    `item_name` text, 
    `item_tags` text, 
    `item_description` varchar(255) NOT NULL DEFAULT 'none', 
    `item_added_by` varchar(45) NOT NULL DEFAULT 'system', 
    `item_display` int(1) NOT NULL DEFAULT '1', 
    PRIMARY KEY (`item_id`), 
    FULLTEXT KEY `word_list` (`item_name`,`item_tags`), 
    FULLTEXT KEY `item_name` (`item_name`,`item_tags`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1$$ 

這裏是我的代碼:

<?php 
error_reporting(E_ALL^E_NOTICE); 

$_POST['search'] = 'red'; 
//if we got something through $_POST 
if (isset($_POST['search'])) { 
$searchQ = $_POST['search']; 
$link = mysql_connect('localhost', '', ''); 
mysql_select_db("", $link); 
$res = mysql_query("SELECT * from word_list WHERE MATCH (item_name, item_tags) AGAINST('$searchQ')", $link); 
echo mysql_errno($link) . ": " . mysql_error($link) . "\n"; 

$ant = mysql_num_rows($res); 
    if ($ant > 0) { // query provided results – display results 
    echo ("<br/><h2>Search results for \"$searchQ\":</h2>"); 
     while ($result = mysql_fetch_array($res)) { 
      echo ("<h3>{$result['name']} ({$result['score']})</h3>{$result['description']}<br/><br/>"); 
     } 
    } else { // query provided 0 results – display 0 hit message 
    echo ("Sorry... Searching for \"$searchQ\" gave no results"); 
    } 
} 
?> 

請讓我知道我做錯了。

+0

您有兩次相同的索引。不要以爲它會解決你的問題(我看不到),但效率不高。另外請記住,當您停止使用mysql_real_escape_string或者更好的PDO函數對其進行硬編碼時,請確保您的$ _POST安全。 – Robbie

+0

你是什麼意思我有兩次相同的索引?我也會逃脫fianl版本,在這一點上,我試圖找出爲什麼它不返回任何結果,爲什麼我不斷收到對不起...消息 – ShadowZzz

+0

deepu打到你爲什麼沒有結果的答案;但是您的表定義中有兩次FULLTEXT索引;你只需要一次。 – Robbie

回答