2011-02-15 53 views
1

我一直在使用Zend Framework幾個月了。所以,我的知識非常好,但我還不是很專業。我正在嘗試將zend_lucene與zend_paginator一起使用,至今未成功。我能夠自己成功地使用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這樣做?我很不確定。我得到的結果是第一頁結果正確顯示。但是當我點擊第二頁或第三頁時,我的結果是空白的。所以不確定什麼可能是錯誤的,因爲我無法找到使用這兩者的文檔或教程。任何幫助將不勝感激。

回答

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->setDefaultPageRange($results->count());