Как заставить работать zend_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;

Есть ли другой шаг, который мне нужно сделать с lucene и zend_paginator? Я действительно не уверен. Результат, который я получаю, заключается в том, что для первой страницы результаты отображаются правильно. Но когда я попадаю на вторую страницу или третью, мои результаты пусты. Так неуверенно, что может быть не так, поскольку я не могу найти документы или учебные пособия по их совместному использованию. Любая помощь будет принята с благодарностью.


person DWLabs    schedule 15.02.2011    source источник


Ответы (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());
person Stephen Fuhry    schedule 27.05.2011