Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql/php搜索引擎中的结果太多且速度慢_Php_Mysql - Fatal编程技术网

mysql/php搜索引擎中的结果太多且速度慢

mysql/php搜索引擎中的结果太多且速度慢,php,mysql,Php,Mysql,好的,我可能可以理解为什么我会得到很多结果,因为我使用了这么多匹配查询。我想要的是输出相关的搜索。例如,如果搜索是“interest in green it”,那么它只输出表中有interest或green的结果,如果有意义的话 现在我得到了所有的结果,另外它真的很慢。我不想使用mysql/php以外的任何东西来实现这一点,因此没有第三方搜索引擎,如Lucene或其他选择 以下是搜索代码: <?php mysql_connect("webhost", "user", "pass"

好的,我可能可以理解为什么我会得到很多结果,因为我使用了这么多匹配查询。我想要的是输出相关的搜索。例如,如果搜索是“interest in green it”,那么它只输出表中有interest或green的结果,如果有意义的话

现在我得到了所有的结果,另外它真的很慢。我不想使用mysql/php以外的任何东西来实现这一点,因此没有第三方搜索引擎,如Lucene或其他选择

以下是搜索代码:

    <?php

mysql_connect("webhost", "user", "pass") or die(mysql_error());
mysql_select_db("replies") or die(mysql_error());

// Retrieve result using term
$term = $_POST['term'];

$sql = mysql_query("SELECT * from 'replies' `where interest_in_green_it` MATCH '%$term%' or `green_it_good_thing MATCH` '%$term%' or    `green_it_save_environment` MATCH '%    $term%' or  `green_it_save_money` MATCH '%$term%' or    `green_it_incentive` MATCH '%$term%' or `uel_green_it MATCH` '%$term%' or   `MATCH_green_it` MATCH '%$term%' or     `printing_costs` MATCH '%$term%' or `travel_costs` MATCH '%$term%' or   `comments` MATCH '%$term%' or   `uel_green_modules` MATCH '%$term%' or  `year_of_study` MATCH '%    $term%' or      `questionnaire_filled` MATCH '%$term%'");

while ($row = mysql_fetch_array){
echo 'ID: '.$row['ID'];
echo '<br/> Do you have an interest in green IT?: '.$row['interest_in_green_it'];
echo '<br/> Do you think green IT is a good thing?: '.$row['green_it_good_thing'];
echo '<br/> Would you consider green IT if it meant saving the environment?: '.$row['green_it_save_environment'];
echo '<br/> Would you consider green IT if it meant saving money?: '.$row['green_it_save_money'];
echo '<br/> What would be the better incentive to practice green IT?: '.$row['green_it_incentive'];
echo '<br/> DO you think UEL is doing enough to practice green IT? : '.$row['uel_green_it'];
echo '<br/> Do you like green IT?: '.$row['like_green_it'];
echo '<br/> Your estimated monthly travel costs to UEL: '.$row['travel_costs'];
echo '<br/> Your estimated printing costs at UEL at any one time: '.$row['printing_costs'];
echo '<br/> Your comments: '.$row['comments'];
echo '<br/> Would you like to see more green modules at UEL?: '.$row['uel_green_modules'];
echo '<br/> What is your year of study?: '.$row['year_of_study'];
echo '<br/> If you did not fill in the questionnaire why not?: '.$row['questionnaire_filled'];
echo '<br/><br/>';
}

$_GET = array_map('trim', $_GET); 
$_POST = array_map('trim', $_POST); 
$_COOKIE = array_map('trim', $_COOKIE); 
$_REQUEST = array_map('trim', $_REQUEST); 
if(get_magic_quotes_gpc()): 
$_GET = array_map('stripslashes', $_GET); 
$_POST = array_map('stripslashes', $_POST); 
$_COOKIE = array_map('stripslashes', $_COOKIE); 
$_REQUEST = array_map('stripslashes', $_REQUEST); 
endif; 
$_GET = array_map('mysql_real_escape_string', $_GET); 
$_POST = array_map('mysql_real_escape_string', $_POST); 
$_COOKIE = array_map('mysql_real_escape_string', $_COOKIE); 
$_REQUEST = array_map('mysql_real_escape_string', $_REQUEST); 

?>
“如何改进此查询?”

使用一个。A在这里可能是有用的

我相信最新的InnoDB引擎也支持全文索引。(MySQL 5.6+)


要获得所有可能的结果,请计算一个分数,该分数确定元组与您的条件的匹配程度,并
按分数排序DESC LIMIT 20
,以获得最佳的20个匹配。有关示例,请参见

你从哪里听说的,如果这是真的,那真是个好消息,有链接吗?这是甲骨文在收购Sun和MySQL之后做的。谢谢(同时,对这些评论被劫持表示歉意!)感谢您的回复,我只是想知道索引到底是什么样子,以及它在上面的代码中应该放在哪里?我正在使用myISAM引擎。谢谢,索引需要事先创建。在创建表之后创建它。索引是指向结果的持久快捷方式。请参阅有关如何创建索引的说明。我建议使用数据库管理工具来操作表的结构。要创建全文索引,请使用
altertable
myTable`添加全文(
myColumn1
myColumn2
,…)`。只有在使用所有列或这些列的任何前缀时,索引才会起作用。手册页也对此进行了解释。