[GENERIC] Zend_Translate:
[zend.git] / documentation / manual / en / tutorials / lucene-pagination.xml
blob91c9bb9fc7847223985b10728b0231e31f19461c
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- Reviewed: no -->
3 <sect1 id="learning.lucene.pagination">
4     <title>Search result pagination</title>
6     <para>
7         As <link linkend="learning.lucene.searching.identifiers">mentioned above</link>, search
8         result hit objects use lazy loading for stored document fields. When any stored field is
9         accessed, the complete document is loaded.
10     </para>
12     <para>
13         Do not retrieve all documents if you actually need to work only with some portion of them.
14         Go through the search results and store document IDs (and optionally the score) somewhere to
15         retrive documents from the index during the next script execution.
16     </para>
18     <example id="learning.lucene.pagination.example">
19         <title>Search result pagination example</title>
21         <programlisting language="php"><![CDATA[
22 $cacheId = md5($query);
24 if (!$resultSet = $cache->load($cacheId)) {
25     $hits = $index->find($query);
26     $resultSet = array();
27     foreach ($hits as $hit) {
28         $resultSetEntry          = array();
29         $resultSetEntry['id']    = $hit->id;
30         $resultSetEntry['score'] = $hit->score;
32         $resultSet[] = $resultSetEntry;
33     }
35     $cache->save($resultSet, $cacheId);
38 $publishedResultSet = array();
39 for ($resultId = $startId; $resultId < $endId; $resultId++) {
40     $publishedResultSet[$resultId] = array(
41         'id'    => $resultSet[$resultId]['id'],
42         'score' => $resultSet[$resultId]['score'],
43         'doc'   => $index->getDocument($resultSet[$resultId]['id']),
44     );
46 ]]></programlisting>
47     </example>
48 </sect1>