| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect1 id="learning.lucene.intro">
- <title>Einführung in Zend_Search_Lucene</title>
- <para>
- Die Komponente <classname>Zend_Search_Lucene</classname> ist dazu gedacht eine sofort
- verwendbare Volltext Suchlösung anzubieten. Es benötigt keine <acronym>PHP</acronym>
- Erweiterungen<footnote><para>Obwohl einige <acronym>UTF-8</acronym> bearbeitenden
- Funktionalitäten die <emphasis>mbstring</emphasis> Erweiterung aktiviert
- benötigen</para></footnote> und auch keine zusätzlich installierte Software, und kann sofort
- nach der Installation von Zend Framework verwendet werden.
- </para>
- <para>
- <classname>Zend_Search_Lucene</classname> ist eine reine <acronym>PHP</acronym> Portierung
- der populären Open Source Volltext Such Maschine auch bekannt als Apache Lucene. Siehe
- <ulink url="http://lucene.apache.org">http://lucene.apache.org/</ulink> für Details.
- </para>
- <para>
- Die Information vor einer Suche muss indiziert werden.
- <classname>Zend_Search_Lucene</classname> und Java Lucene verwenden ein Dokumenten Konzept
- welches als "atomar indiziertes Element" bekannt ist.
- </para>
- <para>
- Jedes Dokument ist ein Set von Feldern: <name, value> Paaren wobei Name und Wert
- <acronym>UTF-8</acronym> String<footnote><para>Binäre String können auch als Feldwerte
- verwendet werden</para></footnote> sind. Jedes Subset von Dokumentfeldern kann als
- "indiziert" markiert werden um Felddaten in den Text-Indizierungs Prozess einzufügen.
- </para>
- <para>
- Feldwerte können wärend des Indizierens in Token übersetzt werden. Wenn ein Feld nicht in
- Token übersetzt wird, dann wird der Feldwert als ein Ausdruck gespeichert; andernfalls wird
- der aktuelle Analysator für die Übersetzung in Token verwendet.
- </para>
- <para>
- Verschiedene Analysatoren werden im <classname>Zend_Search_Lucene</classname> Paket
- angeboten. Der Standard Analysator arbeitet mit <acronym>ASCII</acronym> Text (da der
- <acronym>UTF-8</acronym> Analysator die Aktivierung der <emphasis>mbstring</emphasis>
- Erweiterung benötigt). Er ist unabhängig von der Schreibweise und überspringt Nummern.
- Um dieses Verhalten zu verändern kann entweder ein anderer Analysator verwendet, oder
- ein eigener Analysator erstellt werden.
- </para>
- <note>
- <title>Verwendung von Analysatoren wärend der Indizierung und Suche</title>
- <para>
- Wichtiger Hinweis! Suchabfragen werden auch durch Verwendung des "aktuellen Analysators"
- in Token übersetzt, so dass der selbe Analysator als Standard gesetzt sein muss, sowohl
- für die Indizierung als auch den Suchprozess. Das garantiert das Quelle und durchsuchter
- Text auf die selbe Art und Weise in Ausdrücke umgewandelt werden.
- </para>
- </note>
- <para>
- Feldwerte werden optional in einem Index gespeichert. Das erlaubt es die originalen
- Felddaten vom Index zu empfangen wärend gesucht wird. Das ist der einzige Weg um
- Suchregebnisse mit den originalen Daten zu assoziieren (die interne Dokumenten ID kann sich
- wärend einer Indexoptimierung oder einer automatischen Optimierung verändern).
- </para>
- <para>
- Es sollte daran gedacht werden das ein Lucene Index keine Datenbank ist. Er bietet keinen
- Index Backup Mechanismus ausser dem Backup des Dateisystem Verzeichnisses. Er bietet keinen
- Transaktions Mechanismus aber gleichzeitigen Indexupdates sowie gleichzeitiges
- Aktualisieren und Lesen wird unterstützt. Er kann auch nicht mit Datenbanken in Bezug auf
- die Geschwindigkeit beim Empfangen von Daten verglichen werden.
- </para>
- <para>
- Deshalb ist es eine gute Idee:
- So it's good idea:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- den Lucene Index <emphasis>nicht</emphasis> als Speicher zu verwenden da sich
- hierbei die Geschwindigkeit für das Empfangen von Suchtreffern dramatisch
- verringern kann. Nur eindeutige Dokument Identifikatoren (Dokumentenpfade,
- <acronym>URL</acronym>s, und eindeutige Datenbank IDs) sollen gespeichert und Daten
- in einem Index assoziiert werden, z.B. Titel, Hinweise, Kategorie, Sprachinfos,
- Avatar. (Zu beachten: Ein Feld kann beim Indizieren eingefügt werden, aber nicht
- gespeichert, oder gespeichert, aber nicht indiziert).
- </para>
- </listitem>
- <listitem>
- <para>
- Um Funktionalitäten zu schreiben die einen Index komplett neu erstellen können wenn
- er aus irgendeinem Grund korrupt ist.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- Individuelle Dokumente in einem Index können komplett unterschiedliche Sets an Feldern
- haben. Die selben Felder in unterschiedlichen Dokumenten müssen nicht die gleichen
- Attribute haben. Z.B. kann ein Feld für ein Dokument indiziert sein und für ein anderes
- wird die Indizierung übersprungen. Das gleiche trifft auch für das Speicher, die Umwandlung
- in Token oder der Behandlung von Feldwerten als binärer String zu.
- </para>
- </sect1>
|