上記 のように、検索結果ヒット・オブジェクトでは、格納された文書項目に対して 遅延読み込みを使います。格納された項目のどれかがアクセスされると、 全ての文書が読み込まれます。
もし、実際にはその一部だけで作業したい場合、全ての文書を取り出ししないでください。 検索結果を調べて、次のスクリプト実行中に文書をインデックスから取り出すために、 文書ID(任意にスコア)をどこかに保存してください。
例27 検索結果のページ化例
$cacheId = md5($query); if (!$resultSet = $cache->load($cacheId)) { $hits = $index->find($query); $resultSet = array(); foreach ($hits as $hit) { $resultSetEntry = array(); $resultSetEntry['id'] = $hit->id; $resultSetEntry['score'] = $hit->score; $resultSet[] = $resultSetEntry; } $cache->save($resultSet, $cacheId); } $publishedResultSet = array(); for ($resultId = $startId; $resultId < $endId; $resultId++) { $publishedResultSet[$resultId] = array( 'id' => $resultSet[$resultId]['id'], 'score' => $resultSet[$resultId]['score'], 'doc' => $index->getDocument($resultSet[$resultId]['id']), ); }