| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- <?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>
|