更快地搜索单词数组

时间:2011-01-13 22:43:28

标签: mysql database search words

我想看一下数据库中有多少数据。它很慢,我想知道是否有一种搜索方式,如多个单词或整个数组没有for循环..我现在已经有一段时间了。

这是我的代码

   $dateBegin = "2010-12-07 15:54:24.0";
$dateEnd = "2010-12-30 18:19:52.0";
$textPerson = " text text  text text  text text  text text  text text  text text  text text "; 



$textPersonExplode = explode(" ", $textPerson );



$db = dbConnect();
for ( $counter = 0;$counter <= sizeof($textPersonExplode)-1 ; $counter++) {


$query = "SELECT count(word) FROM `news_google_split`  WHERE `word` LIKE '$textPersonExplode[$counter]'   AND  `date` >= '$dateBegin' AND `date` <= '$dateEnd'"; 

$result = mysql_query($query) or die(mysql_error());



while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
 $word[] = $textPersonExplode[$counter];
 $count[] = $row[0];



}
if (!$result) {
    die('Invalid query: ' . mysql_error());
}
}

感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

如果在查询中使用MATCH..AGAINST对,则可以避免使用for循环。即:

    $query = "SELECT count(word) FROM `news_google_split`  WHERE MATCH(`word`) AGAINST   
('$textPerson')   AND  `date` >= '$dateBegin' AND `date` <= '$dateEnd'"; 

答案 2 :(得分:0)

我们在Db中发送一个逗号分隔列表,然后将该列表转换为表格,然后我们以连接的形式在查询中使用该表。

但是,您需要确保可以传入多少数据作为查询或存储过程的输入。