我正在開發一個關於個性化搜索引擎的項目。 當我搜索優化搜索結果時間的方法時,我遇到了Zend Framework。Zend Framework:大數據庫的問題
我正在處理一個包含5,000,000行和3個字段的數據庫,我正在嘗試使用它進行索引。
這就是我做的事: 用Zend_Search_Lucene :: open()打開索引後;我查詢數據庫[正確], 然後把結果放到$ RESULT1,獲取查詢結果,並與下面的循環處理它們:
while(($row1 = mysql_fetch_array($result1,MYSQL_NUM))) {
$doc = new Zend_Search_Lucene_Document();
$doc->addField(Zend_Search_Lucene_Field::UnIndexed('catid',$row1[0]));
$doc->addField(Zend_Search_Lucene_Field::Text('topic',$row1[1]));
$doc->addField(Zend_Search_Lucene_Field::Text('title',$row1[2]));
$index->addDocument($doc);
}
$index->optimize();
$index->commit();
的問題是,我從來沒有獲得超過3000個addDocuments工作,每次程序在$index->addDocument($doc);
處「停頓」時,永遠不會超過5,000個文檔,更不用說提交索引了。有什麼想法嗎?
是否有任何記錄錯誤?也許你需要增加php.ini中的內存限制... – starsinmypockets 2011-05-18 00:19:13
你是否從命令行運行?如果是這樣,默認max_execution_time將爲0。否則,您可能需要設置http://php.net/manual/en/function.set-time-limit.php或http://www.php.net/manual/en/info.configuration.php#ini。最大執行時間。我猜想腳本在一段時間後會停止。 – 2011-05-18 04:00:54
而且你也可以從5000,000行的表中查詢這樣的'select * from tbl limit%u,10000'而不是'select * from tbl' – azat 2011-05-18 04:33:53