Pagination de résultat de recherche

Comme mentionné plus haut, les objets de résultats de recherche utilisent le lazy loading pour les champs de documents stockés. Lorsque l'on accède à l'un des champs stockés, le document complet est chargé.

Ne récupérez pas tous les documents si vous avez seulement besoin de travailler sur une partie. Parcourez les résultats de recherche et stockez l'ID du document (et éventuellement son score) afin de récupérer les documents depuis l'index pendant la prochaine exécution du script.

Example #1 Exemple de pagination de résultat de recherche

  1. $cacheId = md5($query);
  2. if (!$resultSet = $cache->load($cacheId)) {
  3.     $hits = $index->find($query);
  4.     $resultSet = array();
  5.     foreach ($hits as $hit) {
  6.         $resultSetEntry          = array();
  7.         $resultSetEntry['id']    = $hit->id;
  8.         $resultSetEntry['score'] = $hit->score;
  9.         $resultSet[] = $resultSetEntry;
  10.     }
  11.     $cache->save($resultSet, $cacheId);
  12. }
  13. $publishedResultSet = array();
  14. for ($resultId = $startId; $resultId < $endId; $resultId++) {
  15.     $publishedResultSet[$resultId] = array(
  16.         'id'    => $resultSet[$resultId]['id'],
  17.         'score' => $resultSet[$resultId]['score'],
  18.         'doc'   => $index->getDocument($resultSet[$resultId]['id']),
  19.     );
  20. }
blog comments powered by Disqus