1

我已经使用 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;

我需要对 lucene 和 zend_paginator 做不同的步骤吗?我真的很不确定。我得到的结果是第一页结果正确显示。但是当我点击第二页或第三页时,我的结果是空白的。如此不确定可能出了什么问题,因为我找不到将两者结合使用的文档或教程。任何帮助将不胜感激。

4

1 回答 1

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());
于 2011-05-27T23:04:05.863 回答