lucene-intro.xml 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="learning.lucene.intro">
  5. <title>Einführung in Zend_Search_Lucene</title>
  6. <para>
  7. Die Komponente <classname>Zend_Search_Lucene</classname> ist dazu gedacht eine sofort
  8. verwendbare Volltext Suchlösung anzubieten. Es benötigt keine <acronym>PHP</acronym>
  9. Erweiterungen<footnote><para>Obwohl einige <acronym>UTF-8</acronym> bearbeitenden
  10. Funktionalitäten die <emphasis>mbstring</emphasis> Erweiterung aktiviert
  11. benötigen</para></footnote> und auch keine zusätzlich installierte Software, und kann sofort
  12. nach der Installation von Zend Framework verwendet werden.
  13. </para>
  14. <para>
  15. <classname>Zend_Search_Lucene</classname> ist eine reine <acronym>PHP</acronym> Portierung
  16. der populären Open Source Volltext Such Maschine auch bekannt als Apache Lucene. Siehe
  17. <ulink url="http://lucene.apache.org">http://lucene.apache.org/</ulink> für Details.
  18. </para>
  19. <para>
  20. Die Information vor einer Suche muss indiziert werden.
  21. <classname>Zend_Search_Lucene</classname> und Java Lucene verwenden ein Dokumenten Konzept
  22. welches als "atomar indiziertes Element" bekannt ist.
  23. </para>
  24. <para>
  25. Jedes Dokument ist ein Set von Feldern: &lt;name, value&gt; Paaren wobei Name und Wert
  26. <acronym>UTF-8</acronym> String<footnote><para>Binäre String können auch als Feldwerte
  27. verwendet werden</para></footnote> sind. Jedes Subset von Dokumentfeldern kann als
  28. "indiziert" markiert werden um Felddaten in den Text-Indizierungs Prozess einzufügen.
  29. </para>
  30. <para>
  31. Feldwerte können wärend des Indizierens in Token übersetzt werden. Wenn ein Feld nicht in
  32. Token übersetzt wird, dann wird der Feldwert als ein Ausdruck gespeichert; andernfalls wird
  33. der aktuelle Analysator für die Übersetzung in Token verwendet.
  34. </para>
  35. <para>
  36. Verschiedene Analysatoren werden im <classname>Zend_Search_Lucene</classname> Paket
  37. angeboten. Der Standard Analysator arbeitet mit <acronym>ASCII</acronym> Text (da der
  38. <acronym>UTF-8</acronym> Analysator die Aktivierung der <emphasis>mbstring</emphasis>
  39. Erweiterung benötigt). Er ist unabhängig von der Schreibweise und überspringt Nummern.
  40. Um dieses Verhalten zu verändern kann entweder ein anderer Analysator verwendet, oder
  41. ein eigener Analysator erstellt werden.
  42. </para>
  43. <note>
  44. <title>Verwendung von Analysatoren wärend der Indizierung und Suche</title>
  45. <para>
  46. Wichtiger Hinweis! Suchabfragen werden auch durch Verwendung des "aktuellen Analysators"
  47. in Token übersetzt, so dass der selbe Analysator als Standard gesetzt sein muss, sowohl
  48. für die Indizierung als auch den Suchprozess. Das garantiert das Quelle und durchsuchter
  49. Text auf die selbe Art und Weise in Ausdrücke umgewandelt werden.
  50. </para>
  51. </note>
  52. <para>
  53. Feldwerte werden optional in einem Index gespeichert. Das erlaubt es die originalen
  54. Felddaten vom Index zu empfangen wärend gesucht wird. Das ist der einzige Weg um
  55. Suchregebnisse mit den originalen Daten zu assoziieren (die interne Dokumenten ID kann sich
  56. wärend einer Indexoptimierung oder einer automatischen Optimierung verändern).
  57. </para>
  58. <para>
  59. Es sollte daran gedacht werden das ein Lucene Index keine Datenbank ist. Er bietet keinen
  60. Index Backup Mechanismus ausser dem Backup des Dateisystem Verzeichnisses. Er bietet keinen
  61. Transaktions Mechanismus aber gleichzeitigen Indexupdates sowie gleichzeitiges
  62. Aktualisieren und Lesen wird unterstützt. Er kann auch nicht mit Datenbanken in Bezug auf
  63. die Geschwindigkeit beim Empfangen von Daten verglichen werden.
  64. </para>
  65. <para>
  66. Deshalb ist es eine gute Idee:
  67. So it's good idea:
  68. </para>
  69. <itemizedlist>
  70. <listitem>
  71. <para>
  72. den Lucene Index <emphasis>nicht</emphasis> als Speicher zu verwenden da sich
  73. hierbei die Geschwindigkeit für das Empfangen von Suchtreffern dramatisch
  74. verringern kann. Nur eindeutige Dokument Identifikatoren (Dokumentenpfade,
  75. <acronym>URL</acronym>s, und eindeutige Datenbank IDs) sollen gespeichert und Daten
  76. in einem Index assoziiert werden, z.B. Titel, Hinweise, Kategorie, Sprachinfos,
  77. Avatar. (Zu beachten: Ein Feld kann beim Indizieren eingefügt werden, aber nicht
  78. gespeichert, oder gespeichert, aber nicht indiziert).
  79. </para>
  80. </listitem>
  81. <listitem>
  82. <para>
  83. Um Funktionalitäten zu schreiben die einen Index komplett neu erstellen können wenn
  84. er aus irgendeinem Grund korrupt ist.
  85. </para>
  86. </listitem>
  87. </itemizedlist>
  88. <para>
  89. Individuelle Dokumente in einem Index können komplett unterschiedliche Sets an Feldern
  90. haben. Die selben Felder in unterschiedlichen Dokumenten müssen nicht die gleichen
  91. Attribute haben. Z.B. kann ein Feld für ein Dokument indiziert sein und für ein anderes
  92. wird die Indizierung übersprungen. Das gleiche trifft auch für das Speicher, die Umwandlung
  93. in Token oder der Behandlung von Feldwerten als binärer String zu.
  94. </para>
  95. </sect1>