1

Zend Framework を数か月間使用しています。だから、私の知識はかなり良いですが、私はまだ完全な専門家ではありません. zend_lucene を zend_paginator で使用しようとしていますが、これまでのところ成功していません。zend_lucene とインデックス データを単独で正常に使用でき、データベースのクエリ時に zend_paginator を使用できますが、2 つを組み合わせることができないようです。これが私がやっていることのサンプルです:

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 で行う必要がある別の手順はありますか? 本当に不安です。私が得た結果は、最初のページの結果が正しく表示されるということです。しかし、2 ページ目または 3 ページ目に到達すると、結果が空白になります。2つを一緒に使用する際のドキュメントやチュートリアルが見つからないため、何が問題なのか不明です。どんな助けでも大歓迎です。

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 に答える