0

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に変更しようとしましたが、同じ問題が発生しました。

ここで私が間違っていることを提案してください。

ありがとう。

4

3 に答える 3

0

了解しました、クエリを変更しました

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

これが他の人にも役立つことを願っています。

于 2012-07-26T08:28:15.047 に答える
0

$以前行方不明でしたkeyword

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

もお読みくださいthis

于 2012-07-26T08:32:12.527 に答える
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>";
}
于 2012-07-26T07:52:32.007 に答える