>我正在尝试在控制台命令中使用 Zend Lucene 索引包含 3000 多条记录的表
这是我的代码
public function run($args) {
set_time_limit(0);
Yii::import('application.vendors.*');
require_once 'Zend/Search/Lucene.php';
Zend_Search_Lucene_Search_QueryParser::setDefaultEncoding('utf-8');
Zend_Search_Lucene_Analysis_Analyzer::setDefault(
new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive ()
);
$searchPath = Yii::app()->runtimePath.'/search';
$index = Zend_Search_Lucene::create($searchPath);
/*
* fecth data to index
*/
$sql = 'select id, title, content, succinct, create_time from `news` where status="published"';
$query = Yii::app()->db->createCommand($sql);
$result = $query->queryAll();
foreach ($result as $data) {
$doc = new Zend_Search_Lucene_Document();
$doc->addField(Zend_Search_Lucene_Field::Text('title',
CHtml::encode($data['title']), 'UTF-8')
);
$doc->addField(Zend_Search_Lucene_Field::Text('succinct',
strip_tags($data['succinct']), 'UTF-8')
);
$doc->addField(Zend_Search_Lucene_Field::UnStored('content',
strip_tags($data['content']), 'UTF-8')
);
$doc->addField(Zend_Search_Lucene_Field::UnIndexed('newsId',
$data['id'], 'UTF-8')
);
$doc->addField(Zend_Search_Lucene_Field::UnIndexed('create_time',
$data['create_time'], 'UTF-8')
);
$index->addDocument($doc);
}
$index->commit();
$index->optimize();
}
}
但是我收到此错误
内存不足(需要 228480 字节)
异常"CDb异常",消息"CDb命令无法执行 SQL 语句:SQLSTATE[HY000]:一般错误:2008 MySQL 客户端内存不足。执行的 SQL 语句为:从/home/user/public_html/v2/lib/framework/db/CDbCommand.php:528 中选择 status="published"'news
中的 id、title、content、简洁create_time
有什么建议吗?
前我遇到了类似的错误。我可以通过增加数据库缓存来修复它。您还可以尝试增加 php 解释器在执行期间获得的内存量(客户端用完了内存)。它也可能对你有所帮助。