<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect1 id="learning.lucene.pagination">
    <title>Seitendarstellung von Suchergebnissen</title>

    <para>
        Wie <link linkend="learning.lucene.searching.identifiers">vorher erwähnt</link>, verwenden
        die Hit Objekte von Suchergebnissen Lazy Loading für gespeicherte Dokumentfelder. Wenn auf
        ein gespeichertes Feld zugegriffen wird, wird das komplette Dokument geladen.
    </para>

    <para>
        Man sollte nicht alle Dokumente empfangen wenn man nur mit einem Teil von Ihnen arbeiten
        muss. Man sollte durch die Suchergebnisse gehen und die IDs der Dokumente irgendwo speichern
        (und optional die Bewertung) um die Dokumente vom Index bei der nächsten Ausführung des
        Skripts zu erhalten.
    </para>

    <example id="learning.lucene.pagination.example">
        <title>Beispiel für die seitendarstellung von Suchergebnissen</title>

        <programlisting language="php"><![CDATA[
$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']),
    );
}
]]></programlisting>
    </example>
</sect1>
