我正在尝试构建一个基于MySQL全文的搜索引擎,我没有得到任何搜索结果。我正在开发的MySQL版本是5.5.24,它支持Innodb的全文。因此,为了提高速度,我将数据库类型保留为Innodb,而且我的排序规则是utf8mb4_unicode_ci。
我已经将字段"title"类型设置为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,但出现了同样的问题。
请说明我在这里做错了什么。
谢谢。
尝试使用以下方法:
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>";
}
得到它,修改了查询
$sqlquery = mysql_query("SELECT title FROM test_table WHERE MATCH (title) AGAINST ('keyword' IN BOOLEAN MODE) ")or die (mysql_error());
希望这也能帮助其他人。
您在keyword
之前缺少$
。
$sqlquery = mysql_query("SELECT title FROM test_table
WHERE MATCH(title) AGAINST ('%$keyword%')");
^
另请阅读this
。