2012-07-26 5 views
0

Я пытаюсь создать поисковую систему MySQL FULL TEXT, я не получаю никаких результатов для сделанного поиска. Я работаю над версией MySQL версии 5.5.24, которая поддерживает FULL TEXT для Innodb. поэтому я сохранил тип базы данных в Innodb для скорости, также моя сортировка - utf8mb4_unicode_ci.MySQL Search Query Not Working

У меня установлено поле «название» типа 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 будет ресурсом, boolean задан в –

+0

Не могли бы вы дать mysql_error? (mysql_query (your_sql) или die (mysql_error()); –

+0

Неустранимая ошибка: SQL в D: \ wamp \ www \ Software Site \ test.php в строке 4 –

0

Вам не хватало $ до keyword.

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

Также читайте this.