2011-05-18 88 views
0

我正在開發一個關於個性化搜索引擎的項目。 當我搜索優化搜索結果時間的方法時,我遇到了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個文檔,更不用說提交索引了。有什麼想法嗎?

+0

是否有任何記錄錯誤?也許你需要增加php.ini中的內存限制... – starsinmypockets 2011-05-18 00:19:13

+2

你是否從命令行運行?如果是這樣,默認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

+1

而且你也可以從5000,000行的表中查詢這樣的'select * from tbl limit%u,10000'而不是'select * from tbl' – azat 2011-05-18 04:33:53

回答