如何使用Zend_Lucene和Zend_Paginator优化大量DB记录的索引

时间:2010-04-23 13:39:11

标签: php zend-framework indexing lucene zend-search-lucene

所以我在主机上使用Cron部署并运行了这个cron脚本,并为数据库表中的所有记录编制索引 - 该索引稍后既用于站点的前端,也用于支持的操作。 / p>

操作后,索引大约3-4 MB。

问题是需要大量资源(CPU:30+以及大量内存)并且会降低机器速度。我的问题是如何优化下面描述的操作:

首先使用Zend Framework API构建一个select查询,然后将此查询传递给Paginator工厂,该工厂返回一个paginator,我用它来平衡当前被索引的项目数,而不是迭代过多的项目。 该脚本使用foreach循环遍历paginator对象中的当前项,直到到达结尾,然后在获取下一页的项后从头开始。

我怀疑这个开销是由Zend_Lucene引起的,但不知道如何改进它。

1 个答案:

答案 0 :(得分:1)

请参阅我对Can I predict how large my Zend Framework index will be?

的回答

我测试了Zend_Search_Lucene与Apache Lucene(Java版本)。在我的测试中,Java产品索引150万个文档,比PHP产品快300倍。

使用Apache Solr(Apache Lucene的Tomcat容器)会更开心。 Solr包含一个名为DataImportHandler的工具,它直接从JDBC数据源中提取数据。

使用PECL Solr扩展名从PHP与Solr进行通信。如果您无法安装该PHP扩展,请使用Curl,它应该在PHP的默认安装中可用。