Zend framework 使用zend_lucene_搜索和zend_Paginator缓存

Zend framework 使用zend_lucene_搜索和zend_Paginator缓存,zend-framework,zend-search-lucene,zend-paginator,Zend Framework,Zend Search Lucene,Zend Paginator,我想使用Zend_Paginator::setCache()缓存来自Zend_Lucene_搜索的结果 我得到以下错误: Warning: fseek() expects parameter 1 to be resource, integer given 以下是代码的一部分: // Load index $index = Zend_Search_Lucene::open(APPLICATION_PATH . '/indexes'); // Paginate $paginator = Zend_

我想使用Zend_Paginator::setCache()缓存来自Zend_Lucene_搜索的结果

我得到以下错误:

Warning: fseek() expects parameter 1 to be resource, integer given
以下是代码的一部分:

// Load index
$index = Zend_Search_Lucene::open(APPLICATION_PATH . '/indexes');
// Paginate
$paginator = Zend_Paginator::factory($index->find($query));
$paginator->setCache($this->_cache);
$paginator->setItemCountPerPage($items);
$paginator->setCurrentPageNumber($page);
// Send to view
$this->view->hits = $paginator;
在站点的其他区域,我使用相同的技术缓存非Zend_Lucene_Search的分页结果,这很好


我在某个地方读到,将结果存储在会话或缓存中会破坏lucene文档,您必须将QueryHit对象转换为stdClass对象,但是如何转换呢?这行吗?

好的,解决了,我想得太多了

$hits = $index->find($query);
$this->view->totalHits = count($hits);
// Convert to stdClass to allow caching
foreach ($hits as $i => $hit) {
    $resultsArray[$i] = new stdClass();
    $doc = $hit->getDocument();
    foreach($doc->getFieldNames() as $field){
        $resultsArray[$i]->{$field} = $hit->{$field};
    }
}
// Paginate
$paginator = Zend_Paginator::factory($resultsArray);
$paginator->setCache($this->_cache);
$paginator->setItemCountPerPage($items);
$paginator->setCurrentPageNumber($page);
// Send to view
$this->view->hits = $paginator;