2011-01-13 67 views
0

我想看看數組中有多少數據。它很慢,我想知道是否有一種搜索方式像多個單詞或整個數組沒有一個for循環..我現在正在struggeling一段時間。快速搜索字詞數組

這裏是我的代碼

$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()); 
} 
} 

感謝您的幫助。

回答

0

如果在查詢中使用MATCH..AGAINST對,則可以避免使用for循環。即:

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

我已經看到了這一點,但我無法讓它正常工作。那麼我該如何進行查詢呢? – Martijn 2011-01-13 22:51:37

+0

使用MATCH ... AGAINST語法。 `選擇標題,故事從新聞 匹配(標題,故事)反對('颶風');`也請注意,表格必須是MyISAM。 – keithjgrant 2011-01-13 22:54:14

0

我們用dB發送逗號分隔的列表,然後轉換該列表到一個表,然後我們使用該表在我們的查詢中的連接形式。

但是,您需要確定您可以傳入多少數據作爲查詢或存儲過程的輸入。