How to get zend_lucene and zend_paginator to work

325 views Asked by At

I've been using Zend Framework for a few months now. So, my knowledge is pretty good but I'm not quite an expert yet. I am trying to use zend_lucene with zend_paginator and so far not successful. I am able to use zend_lucene and index data successfully by itself and able to do use zend_paginator when querying the database, but I can't seem to combine the two. Here is a sample of what I am doing:

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;

Is there a different step I need to do with lucene and zend_paginator? I am really uncertain. The result I get is that for the first page results display properly. But when I hit the second page or third my results are blank. So uncertain what might be wrong as I can't find docs or tutorials in using the two together. Any help would be greatly appreciated.

1

There are 1 answers

0
Stephen Fuhry On

I think this may work with the iterator adapter:

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;
}

Perhaps the problem you are having is that $paginator doesn't know how many search results there are..

So you may need to do that manually:

$paginator->setDefaultPageRange($results->count());