lucene-pagination.xml 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="learning.lucene.pagination">
  5. <title>Seitendarstellung von Suchergebnissen</title>
  6. <para>
  7. Wie <link linkend="learning.lucene.searching.identifiers">vorher erwähnt</link>, verwenden
  8. die Hit Objekte von Suchergebnissen Lazy Loading für gespeicherte Dokumentfelder. Wenn auf
  9. ein gespeichertes Feld zugegriffen wird, wird das komplette Dokument geladen.
  10. </para>
  11. <para>
  12. Man sollte nicht alle Dokumente empfangen wenn man nur mit einem Teil von Ihnen arbeiten
  13. muss. Man sollte durch die Suchergebnisse gehen und die IDs der Dokumente irgendwo speichern
  14. (und optional die Bewertung) um die Dokumente vom Index bei der nächsten Ausführung des
  15. Skripts zu erhalten.
  16. </para>
  17. <example id="learning.lucene.pagination.example">
  18. <title>Beispiel für die seitendarstellung von Suchergebnissen</title>
  19. <programlisting language="php"><![CDATA[
  20. $cacheId = md5($query);
  21. if (!$resultSet = $cache->load($cacheId)) {
  22. $hits = $index->find($query);
  23. $resultSet = array();
  24. foreach ($hits as $hit) {
  25. $resultSetEntry = array();
  26. $resultSetEntry['id'] = $hit->id;
  27. $resultSetEntry['score'] = $hit->score;
  28. $resultSet[] = $resultSetEntry;
  29. }
  30. $cache->save($resultSet, $cacheId);
  31. }
  32. $publishedResultSet = array();
  33. for ($resultId = $startId; $resultId < $endId; $resultId++) {
  34. $publishedResultSet[$resultId] = array(
  35. 'id' => $resultSet[$resultId]['id'],
  36. 'score' => $resultSet[$resultId]['score'],
  37. 'doc' => $index->getDocument($resultSet[$resultId]['id']),
  38. );
  39. }
  40. ]]></programlisting>
  41. </example>
  42. </sect1>