我已经使用Zend Framework几个月了。所以,我的知识非常好,但我还不是一个专家。我试图使用zend_lucene和zend_paginator,但到目前为止还没有成功。我能够自己成功地使用zend_lucene和索引数据,并且在查询数据库时能够使用zend_paginator,但我似乎无法将两者结合起来。以下是我正在做的事情的样本:
try {
$searchresults = $index->find($lucenequery);
}
catch (Zend_Search_Lucene_Exception $e) {
echo "Unable {$e->getMessage()}";
}
$page = $this->_getParam('page',1);
$paginator = Zend_Paginator::factory($searchresults);
$paginator->setItemCountPerPage(20);
$paginator->setCurrentPageNumber($page);
$this->view->paginator = $paginator;
$page = $this->_getParam('page',1);
$paginator = Zend_Paginator::factory($searchresults);
$paginator->setItemCountPerPage(20);
$paginator->setCurrentPageNumber($page);
$this->view->paginator = $paginator;
我需要用lucene和zend_paginator做一个不同的步骤吗?我真的不确定。我得到的结果是第一页结果正确显示。但当我点击第二页或第三页时,我的结果是空白的。如此不确定可能出现什么问题,因为我无法找到使用这两者的文档或教程。任何帮助将不胜感激。
答案 0 :(得分:1)
我认为这可能适用于迭代器适配器:
public function searchAction() {
$index = Zend_Search_Lucene::open('/path/to/lucene');
$results = $index->find($this->_getParam('q'));
$paginator = Zend_Paginator::factory($results);
$paginator->setCurrentPageNumber($this->_getParam('page', 1));
$paginator->setItemCountPerPage(10);
$this->view->results = $paginator;
}
也许您遇到的问题是$ paginator不知道有多少搜索结果..
因此您可能需要手动执行此操作:
$paginator->setDefaultPageRange($results->count());