2012-07-26 102 views
0

我試圖建立一個基於MySQL全文本的搜索引擎,我沒有得到任何搜索結果。 我正在MySQL版本是5.5.24,它支持Innodb的全文。所以我爲了達到速度的目的而將數據庫類型保存到Innodb中,我的排序規則是utf8mb4_unicode_ci。MySQL搜索查詢不起作用

我已經將字段「標題」類型設置爲TEXT並修改了表格「test_table」。

ALTER TABLE `test_table` ADD FULLTEXT (`title`) 

我正在寫這樣的查詢,但沒有顯示任何結果。

require_once('../global/includes/connect.php'); 
$db = mysql_select_db($database,$connection) or trigger_error("SQL", E_USER_ERROR); 

$sqlquery = mysql_query("SELECT title FROM test_table WHERE MATCH(title) AGAINST ('%keyword%')"); 
while($row=mysql_fetch_assoc($sqlquery)){ 
echo $row['title']; 
echo"</br>"; 
} 

查詢這樣

$sqlquery = mysql_query("SELECT title FROM test_table "); 
while($row=mysql_fetch_assoc($sqlquery)){ 
echo $row['title']; 
echo"</br>"; 

結果顯示。

我試着改變數據庫到MyISAM,但同樣的問題。

請在這裏建議我做錯了什麼。

謝謝。

回答

0

得到它,修改後的查詢

$sqlquery = mysql_query("SELECT title FROM test_table WHERE MATCH (title) AGAINST ('keyword' IN BOOLEAN MODE) ")or die (mysql_error()); 

希望這會幫助別人了。

0

嘗試使用以下:

require_once('../global/includes/connect.php'); 
$db = mysql_select_db($database,$connection) or trigger_error("SQL", E_USER_ERROR); 

$sqlquery = mysql_query("SELECT MATCH(title) FROM test_table WHERE MATCH(title) AGAINST ('security')") OR die(mysql_error()); 
while($row=mysql_fetch_assoc($sqlquery)){ 
echo $row['title']; 
echo"</br>"; 
} 
+0

試過但得到錯誤mysql_fetch_assoc()期望參數1是資源,布爾在 – 2012-07-26 07:54:51

+0

中給出您可以給mysql_error? (mysql_query(your_sql)或die(mysql_error()); – 2012-07-26 07:57:27

+0

致命錯誤:第4行D:\ wamp \ www \ Software Site \ test.php中的SQL語句 – 2012-07-26 08:02:49

0

您在keyword之前缺少$

$sqlquery = mysql_query("SELECT title FROM test_table 
         WHERE MATCH(title) AGAINST ('%$keyword%')"); 
                ^

也讀this