Как заставить работать zend_lucene и zend_paginator - PullRequest
1 голос
/ 15 февраля 2011

Я использую 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()}"; }</p> <pre><code> $page = $this->_getParam('page',1); $paginator = Zend_Paginator::factory($searchresults); $paginator->setItemCountPerPage(20); $paginator->setCurrentPageNumber($page); $this->view->paginator = $paginator;

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

1 Ответ

1 голос
/ 28 мая 2011

Я думаю, что это может работать с адаптером итератора:

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());
...