如何让zend_lucene和zend_paginator工作

时间:2011-02-15 03:17:06

标签: zend-framework zend-search-lucene zend-paginator

我已经使用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做一个不同的步骤吗?我真的不确定。我得到的结果是第一页结果正确显示。但当我点击第二页或第三页时,我的结果是空白的。如此不确定可能出现什么问题,因为我无法找到使用这两者的文档或教程。任何帮助将不胜感激。

1 个答案:

答案 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());