2012-07-26 100 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