我正在尝试构建一个基于MySQL FULL TEXT的搜索引擎,我没有得到任何搜索结果。 我正在研究的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,但问题相同。
请在这里建议我做错了什么。
感谢。
答案 0 :(得分: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>";
}
答案 1 :(得分:0)
得到它,修改了查询
$sqlquery = mysql_query("SELECT title FROM test_table WHERE MATCH (title) AGAINST ('keyword' IN BOOLEAN MODE) ")or die (mysql_error());
希望这也有助于其他人。
答案 2 :(得分:0)
$
之前您遗失了keyword
。
$sqlquery = mysql_query("SELECT title FROM test_table
WHERE MATCH(title) AGAINST ('%$keyword%')");
^
另请阅读this
。