| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.search.lucene.overview">
- <title>Überblick</title>
- <sect2 id="zend.search.lucene.introduction">
- <title>Einführung</title>
- <para>
- <classname>Zend_Search_Lucene</classname> ist eine komplett in <acronym>PHP</acronym> 5
- geschriebene Textsuchmaschine für viele Zwecke. Da es seinen Index im Dateisystem ablegt
- und keinen Datenbankserver erfordert, kann es eine Suchfunktion für nahezu jede auf
- <acronym>PHP</acronym> basierende Website bereitstellen.
- <classname>Zend_Search_Lucene</classname> unterstützt die folgenden Funktionalitäten:
- <itemizedlist>
- <listitem>
- <para>
- Klassifizierte Suche - die besten Ergebnisse werden zuerst zurückgegeben
- </para>
- </listitem>
- <listitem>
- <para>
- Viele mächtige Abfragearten: Phrasensuche, Platzhaltersuche, Boolsche Suche,
- Näherungssuche, Bereichssuche und viele andere.
- </para>
- </listitem>
- <listitem>
- <para>
- Suche anhand eines bestimmten Feldes (z.B. Titel, Autor, Inhalt)
- </para>
- </listitem>
- </itemizedlist>
- <classname>Zend_Search_Lucene</classname> wurde abgeleitet vom Apache Lucene Projekt.
- Die aktuell unterstützten Versionen des Lucene Indexformats (beginnend mit Zend
- Framework 1.6) sind 1.4 - 2.3. Für weitere Informationen über Lucene, besuchen Sie
- <ulink url="http://lucene.apache.org/java/docs/"/>.
- </para>
- <note>
- <title/>
- <para>
- Frühere <classname>Zend_Search_Lucene</classname> Implementationen unterstützen das
- Lucene Indexformat 1.4 (1.9) - 2.1.
- </para>
- <para>
- Beginnend mit Zend Framework 1.5 werden, nach dem
- <classname>Zend_Search_Lucene</classname> Update, alle Indezes die mit einem pre-2.1
- Indexformat erstellt wurden automatisch in das Lucene 2.1 Format upgegraded und ist
- daher mit vorherigen <classname>Zend_Search_Lucene</classname> Versionen nicht mehr
- kompatibel die in Zend Framework 1.0.x enthalten sind.
- </para>
- </note>
- </sect2>
- <sect2 id="zend.search.lucene.index-creation.documents-and-fields">
- <title>Dokumenten- und Feldobjekte</title>
- <para>
- Für die Indizierung verarbeitet <classname>Zend_Search_Lucene</classname> Dokumente
- als atomare Objekte. Ein Dokument wird in benannte Felder unterteilt und diese
- Felder enthalten Inhalte, die durchsucht werden können.
- </para>
- <para>
- Ein Dokument wird durch die <classname>Zend_Search_Lucene_Document</classname>
- Klasse abgebildet und die Objekte dieser Klasse enthalten Instanzen von
- <classname>Zend_Search_Lucene_Field</classname>, welche die Felder dieses Objektes
- repräsentieren.
- </para>
- <para>
- Es ist wichtig zu beachten, dass dem Index jegliche Informationen hinzugefügt werden
- können. Anwendungsspezifische Informationen oder Metadaten können in den
- Dokumentfeldern gespeichert und später bei der Suche aus dem Dokument zurückgeholt
- werden.
- </para>
- <para>
- Es liegt in der Verantwortung deiner Anwendung, den Indexer zu kontrollieren. Das
- bedeutet, dass die Daten aus jeder Quelle indiziert werden können, die von deiner
- Anwendung aus ansprechbar ist. Zum Beispiel könnten dies das Dateisystem, eine
- Datenbank, ein <acronym>HTML</acronym> Formular, usw. sein.
- </para>
- <para>
- Die <classname>Zend_Search_Lucene_Field</classname> Klasse stellt verschiedene
- statische Methoden zum Erstellen mit unterschiedlichen Charakteristika bereit:
- </para>
- <programlisting language="php"><![CDATA[
- $doc = new Zend_Search_Lucene_Document();
- // Feld wird nicht in Token aufgeteilt, aber indiziert und im Index
- // gespeichert. Die gespeichertern Felder können aus dem Index abgerufen werden
- $doc->addField(Zend_Search_Lucene_Field::Keyword('doctype',
- 'autogenerated'));
- // Feld wird weder in Token aufgeteilt noch indiziert, aber im Index gespeichert
- $doc->addField(Zend_Search_Lucene_Field::UnIndexed('created',
- time()));
- // Feld mit einer binären Zeichenkette, die weder in Token aufgeteilt
- // noch indiziert, aber im Index gespeichert wird
- $doc->addField(Zend_Search_Lucene_Field::Binary('icon',
- $iconData));
- // Feld wird in Token aufgeteilt und indiziert und im Index gespeichert
- $doc->addField(Zend_Search_Lucene_Field::Text('annotation',
- 'Document annotation text'));
- // Feld wird in Token aufgeteilt und indiziert, aber nicht im Index gespeichert
- $doc->addField(Zend_Search_Lucene_Field::UnStored('contents',
- 'My document content'));
- ]]></programlisting>
- <para>
- Jede dieser Methoden (ausser der
- <methodname>Zend_Search_Lucene_Field::Binary()</methodname> Methode) hat einen
- optionalen <varname>$encoding</varname> Parameter. Er definiert das Encoding für
- Eingabedaten.
- </para>
- <para>
- Die Codierung kann für unterschiedliche Dokumente verschieden sein genauso wie für
- unterschiedliche Felder innerhalb eines Dokuments:
- </para>
- <programlisting language="php"><![CDATA[
- $doc = new Zend_Search_Lucene_Document();
- $doc->addField(Zend_Search_Lucene_Field::Text('title',
- $title,
- 'iso-8859-1'));
- $doc->addField(Zend_Search_Lucene_Field::UnStored('contents',
- $contents,
- 'utf-8'));
- ]]></programlisting>
- <para>
- Wenn der encoding Parameter nicht angegeben wurde, wird das aktuelle Gebietsschema
- während der Verarbeitungzeit verwendet. Zum Beispiel:
- </para>
- <programlisting language="php"><![CDATA[
- setlocale(LC_ALL, 'de_DE.iso-8859-1');
- ...
- $doc->addField(Zend_Search_Lucene_Field::UnStored('contents', $contents));
- ]]></programlisting>
- <para>
- Felder werden immer gespeichert und vom Index in UTF-8 Codierung zurückgegeben. Jede
- notwendige Konvertierung zu UTF-8 geschieht automatisch.
- </para>
- <para>
- Text Analysatoren (<link linkend="zend.search.lucene.extending.analysis">siehe
- unten</link>) können auch Text in andere Codierungen konvertieren. Aktuell
- konvertiert der Standard Analysator Text in die 'ASCII//TRANSLIT' Codierung. Man
- sollte aber vorsichtig sein; diese Übersetzung hängt vom aktuellen Gebietsschema ab.
- </para>
- <para>
- Feld Namen werden durch die Auswahl in der <methodname>addField()</methodname>
- Methode definiert.
- </para>
- <para>
- Java Lucene verwendet das "contents" Feld für die Suche als Standardfeld.
- <classname>Zend_Search_Lucene</classname> durchsucht standardmäßig alle Felder,
- aber dieses Verhalten ist konfigurierbar. Für Details siehe das Kapitel
- <link linkend="zend.search.lucene.query-language.fields">"Standardsuchfeld"</link>.
- </para>
- </sect2>
- <sect2 id="zend.search.lucene.index-creation.understanding-field-types">
- <title>Verstehen der Feldtypen</title>
- <itemizedlist>
- <listitem>
- <para>
- <code>Keyword</code> (Stichwort) Felder werden gespeichert und indiziert, was
- bedeutet, dass sie sowohl durchsucht als auch in Suchergebnissen angezeigt
- werden können. Sie werden nicht in einzelne Worte (Tokens) zerteilt.
- Datenbankfelder für Aufzählungen lassen sich normalerweise leicht in Keyword
- Felder für <classname>Zend_Search_Lucene</classname> überführen.
- </para>
- </listitem>
- <listitem>
- <para>
- <code>UnIndexed</code> (unindizierte) Felder sind nicht durchsuchbar, werden
- aber bei Suchtreffern zurückgegeben. Datenbank Zeitstempel, Primärschlüssel,
- Pfade des Dateisystems und andere externe Identifikatoren sind gute Kandidaten
- für UnIndexed Felder.
- </para>
- </listitem>
- <listitem>
- <para>
- <code>Binary</code> (binäre) Felder werden nicht in Token aufgeteilt und
- indiziert, aber für die Rückgabe bei Suchtreffern gespeichert. Sie können für
- die Speicherung aller Daten, die als binäre Zeichenkette kodiert sind,
- verwendet werden, wie z.B. eine Grafiksymbol.
- </para>
- </listitem>
- <listitem>
- <para>
- <code>Text</code> Felder werden gespeichert, indiziert und in Token aufgeteilt.
- Text Felder sind geeignet für die Speicherung von Informationen wie Themen und
- Überschriften, die sowohl durchsuchbar sein müssen, als auch in Suchergebnissen
- zurückgegeben werden müssen.
- </para>
- </listitem>
- <listitem>
- <para>
- <code>UnStored</code> (nicht gespeicherte) Felder werden in Token aufgeteilt und
- indiziert, aber nicht im Index gespeichert. Umfangreiche Texte werden am besten
- durch diesen Feldtyp indiziert. Gespeicherte Daten benötigen einen größeren
- Index auf der Festplatte, wenn du also Daten nur durchsuchbar aber nicht wieder
- ausgegeben haben musst, verwende ein UnStored Feld. UnStored Felder sind
- geeignet, wenn ein <classname>Zend_Search_Lucene</classname> Index in
- Kombination mit einer relationalen Datenbank verwendet wird. Du kannst große
- Datenfelder mit UnStored Feldern für die Suche indizieren und sie aus der
- relationalen Datenbank durch die Verwendung eines separaten Feldes mithilfe
- eines Identifikators zurückholen.
- </para>
- <table id="zend.search.lucene.index-creation.understanding-field-types.table">
- <title>Zend_Search_Lucene_Field Typen</title>
- <tgroup cols="5">
- <thead>
- <row>
- <entry>Feldtyp</entry>
- <entry>Gespeichert</entry>
- <entry>Indiziert</entry>
- <entry>In Token aufgeteilt</entry>
- <entry>Binär</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>Keyword</entry>
- <entry>Ja</entry>
- <entry>Ja</entry>
- <entry>Nein</entry>
- <entry>Nein</entry>
- </row>
- <row>
- <entry>UnIndexed</entry>
- <entry>Ja</entry>
- <entry>Nein</entry>
- <entry>Nein</entry>
- <entry>Nein</entry>
- </row>
- <row>
- <entry>Binary</entry>
- <entry>Ja</entry>
- <entry>Nein</entry>
- <entry>Nein</entry>
- <entry>Ja</entry>
- </row>
- <row>
- <entry>Text</entry>
- <entry>Ja</entry>
- <entry>Ja</entry>
- <entry>Ja</entry>
- <entry>Nein</entry>
- </row>
- <row>
- <entry>UnStored</entry>
- <entry>Nein</entry>
- <entry>Ja</entry>
- <entry>Ja</entry>
- <entry>Nein</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </listitem>
- </itemizedlist>
- </sect2>
- <sect2 id="zend.search.lucene.index-creation.html-documents">
- <title>HTML Dokumente</title>
- <para>
- <classname>Zend_Search_Lucene</classname> bietet ein <acronym>HTML</acronym> Parsing
- Feature. Dokumente können direkt von einer <acronym>HTML</acronym> Datei oder String
- erzeugt werden:
- </para>
- <programlisting language="php"><![CDATA[
- $doc = Zend_Search_Lucene_Document_Html::loadHTMLFile($filename);
- $index->addDocument($doc);
- ...
- $doc = Zend_Search_Lucene_Document_Html::loadHTML($htmlString);
- $index->addDocument($doc);
- ]]></programlisting>
- <para>
- Die <classname>Zend_Search_Lucene_Document_Html</classname> Klasse verwendet die
- <methodname>DOMDocument::loadHTML()</methodname> und die
- <methodname>DOMDocument::loadHTMLFile()</methodname> Methode um die
- <acronym>HTML</acronym> Quelle zu analysieren, deswegen benötigt Sie kein gut
- geformtes <acronym>HTML</acronym> noch ein <acronym>XHTML</acronym>. Auf der anderen
- Seite ist es abhängig von der angegebenen Codierung im "meta http-equiv" Tag Header.
- </para>
- <para>
- Die <classname>Zend_Search_Lucene_Document_Html</classname> Klasse erkennt Dokument
- Titel, Body Dokument Header Meta Tags.
- </para>
- <para>
- Das 'title' Feld ist aktuell der /html/head/title Wert. Er wird inneralb des Index
- gespeichert, Tokenized und für die Suche zur Verfügung gestellt.
- </para>
- <para>
- Das 'body' Feld ist aktuell der Inhalt vom Body der <acronym>HTML</acronym> Datei oder
- des Strings. Er enthält keine Skripte, Kommentare oder Attribute.
- </para>
- <para>
- Die <methodname>loadHTML()</methodname> und <methodname>loadHTMLFile()</methodname>
- Methoden der <classname>Zend_Search_Lucene_Document_Html</classname> Klasse haben auch
- ein zweites optionales Argument. Wenn es auf <constant>TRUE</constant> gesetzt wird,
- wird der Inhalt vom Body auch innerhalb des Index gespeichert und kann vom Index
- empfangen werden. Standardmäßig wird der Body nur Tokenized und Indiziert, aber nicht
- gespeichert.
- </para>
- <para>
- Der dritte Parameter der <methodname>loadHTML()</methodname> und
- <methodname>loadHTMLFile()</methodname> Methoden spezifiziert optional die Kodierung des
- Quell- <acronym>HTML</acronym> Dokuments. Er wird verwendet wenn die Kodierung nicht
- durch die Angabe des Content-type MetaTags HTTP-EQUIV spezifiziert ist.
- </para>
- <para>
- Andere Dokument Header Meta Tags produzieren zusätzliche Dokument Felder. Der Feld
- 'name' wird vom 'name' Attribut genommen, und das 'content' Attribut veröffentlicht das
- Feld 'value'. Beide werden geteilt, indiziert und gespeichert damit damit Dokumente mit
- Hilfe Ihrer Meta Tags durchsucht werden können (zum Beispiel durch Schlüsselwörter).
- </para>
- <para>
- Analysierte Dokumente können durch den Programmierer mit jedem anderen Feld ausgegeben
- werden:
- </para>
- <programlisting language="php"><![CDATA[
- $doc = Zend_Search_Lucene_Document_Html::loadHTML($htmlString);
- $doc->addField(Zend_Search_Lucene_Field::UnIndexed('created',
- time()));
- $doc->addField(Zend_Search_Lucene_Field::UnIndexed('updated',
- time()));
- $doc->addField(Zend_Search_Lucene_Field::Text('annotation',
- 'Document annotation text'));
- $index->addDocument($doc);
- ]]></programlisting>
- <para>
- Dokument-Links sind im erstellten Dokument nicht enthalten, können aber mit den
- <methodname>Zend_Search_Lucene_Document_Html::getLinks()</methodname> und
- <methodname>Zend_Search_Lucene_Document_Html::getHeaderLinks()</methodname> Methoden
- empfangen werden:
- </para>
- <programlisting language="php"><![CDATA[
- $doc = Zend_Search_Lucene_Document_Html::loadHTML($htmlString);
- $linksArray = $doc->getLinks();
- $headerLinksArray = $doc->getHeaderLinks();
- ]]></programlisting>
- <para>
- Beginnend mit Zend Framework 1.6 ist es auch möglich Links mit dem <code>rel</code>
- Attribut auszunehmen wenn es auf <code>'nofollow'</code> gesetzt wird. Man kann
- <methodname>Zend_Search_Lucene_Document_Html::setExcludeNoFollowLinks($true)</methodname>
- verwenden um diese Option einzuschalten.
- </para>
- <para>
- Die <methodname>Zend_Search_Lucene_Document_Html::getExcludeNoFollowLinks()</methodname>
- Methode gibt den aktuellen Status des "Exclude nofollow links" Flags zurück.
- </para>
- </sect2>
- <sect2 id="zend.search.lucene.index-creation.docx-documents">
- <title>Word 2007 Dokumente</title>
- <para>
- <classname>Zend_Search_Lucene</classname> bietet ein Word 2007 Parsing Feature.
- Dokumente können direkt aus einer Word 2007 Datei heraus erstellt werden:
- </para>
- <programlisting language="php"><![CDATA[
- $doc = Zend_Search_Lucene_Document_Docx::loadDocxFile($filename);
- $index->addDocument($doc);
- ]]></programlisting>
- <para>
- Die <classname>Zend_Search_Lucene_Document_Docx</classname> Klasse verwendet die
- <code>ZipArchive</code> Klasse und <code>simplexml</code> Methoden um das Quelldokument
- zu parsen. Wenn die <code>ZipArchive</code> Klasse (vom Modul php_zip) nicht vorhanden
- ist, wird <classname>Zend_Search_Lucene_Document_Docx</classname> auch nicht für die
- Verwendung mit dem Zend Framework zur Verfügung stehen.
- </para>
- <para>
- Die <classname>Zend_Search_Lucene_Document_Docx</classname> Klasse erkennt die Metadaten
- und den Text des Dokuments. Metadaten bestehen, abhängig vom Inhalt des Dokuments, aus
- Dateinamen, Titel, Untertitel, Ersteller, Schlüsselwörter, Beschreibung, zuletzt
- geändert von, Version, Geändert und Erstellt.
- </para>
- <para>
- Das Feld 'filename' ist der aktuelle Word 2007 Dateiname.
- </para>
- <para>
- Das Feld 'title' ist der aktuelle Titel des Dokuments.
- </para>
- <para>
- Das Feld 'subject' ist der aktuelle Untertitel des Dokuments.
- </para>
- <para>
- Das Feld 'creator' ist der Ersteller des aktuellen Dokuments.
- </para>
- <para>
- Das Feld 'keywords' enthält die Schlüsselwörter des aktuellen Dokuments.
- </para>
- <para>
- Das Feld 'description' ist die Beschreibung des aktuellen Dokuments.
- </para>
- <para>
- Das Feld 'lastModifiedBy' ist der Benutzername der Person die das aktuelle Dokument
- als letztes geändert hat.
- </para>
- <para>
- Das Feld 'revision' ist die Versionsnummer des aktuellen Dokuments.
- </para>
- <para>
- Das Feld 'modified' ist das Datum / die Uhrzeit der letzten Änderung des
- aktuellen Dokuments.
- </para>
- <para>
- Das Feld 'created' ist das Datum / die Uhrzeit der Erstellung des aktuellen
- Dokuments.
- </para>
- <para>
- Das Feld 'body' ist der aktuelle Inhalt des Word 2007 Dokuments. Es enthält nur
- normalen Text, Kommentare und Versionen sind nicht enthalten.
- </para>
- <para>
- Die Methode <methodname>loadDocxFile()</methodname> der
- <classname>Zend_Search_Lucene_Document_Docx</classname> Klasse hat auch ein zweites
- optionales Argument. Wenn es auf <constant>TRUE</constant> gesetzt wird, wird der Inhalt
- auch mit einem Index gespeichert und kann vom Index empfangen werden. Standardmäßig wird
- der Inhalt gesplittet und indiziert, aber nicht gespeichert.
- </para>
- <para>
- Eingelesene Dokumente können vom Programierer mit jedem anderen Feld argumentiert
- werden:
- </para>
- <programlisting language="php"><![CDATA[
- $doc = Zend_Search_Lucene_Document_Docx::loadDocxFile($filename);
- $doc->addField(Zend_Search_Lucene_Field::UnIndexed(
- 'indexTime',
- time())
- );
- $doc->addField(Zend_Search_Lucene_Field::Text(
- 'annotation',
- 'Anmerkungstext des Dokuments')
- );
- $index->addDocument($doc);
- ]]></programlisting>
- </sect2>
- <sect2 id="zend.search.lucene.index-creation.pptx-documents">
- <title>Powerpoint 2007 Dokumente</title>
- <para>
- <classname>Zend_Search_Lucene</classname> bietet ein Parsing Feature für Powerpoint
- 2007. Dokumente können direkt auf einer Powerpoint 2007 Datei heraus erstellt werden:
- </para>
- <programlisting language="php"><![CDATA[
- $doc = Zend_Search_Lucene_Document_Pptx::loadPptxFile($filename);
- $index->addDocument($doc);
- ]]></programlisting>
- <para>
- Die <classname>Zend_Search_Lucene_Document_Pptx</classname> Klasse verwendet die
- <code>ZipArchive</code> Klasse und <code>simplexml</code> Methoden um das Quelldokument
- zu parsen. Wenn die <code>ZipArchive</code> Klasse (vom Modul php_zip) nicht vorhanden
- ist, wird <classname>Zend_Search_Lucene_Document_Docx</classname> auch nicht für die
- Verwendung mit dem Zend Framework zur Verfügung stehen.
- </para>
- <para>
- Die <classname>Zend_Search_Lucene_Document_Docx</classname> Klasse erkennt die Metadaten
- und den Text des Dokuments. Metadaten bestehen, abhängig vom Inhalt des Dokuments, aus
- Dateinamen, Titel, Untertitel, Ersteller, Schlüsselwörter, Beschreibung, zuletzt
- geändert von, Version, Geändert und Erstellt.
- </para>
- <para>
- Das Feld 'filename' ist der aktuelle Powerpoint 2007 Dateiname.
- </para>
- <para>
- Das Feld 'title' ist der aktuelle Titel des Dokuments.
- </para>
- <para>
- Das Feld 'subject' ist der aktuelle Untertitel des Dokuments.
- </para>
- <para>
- Das Feld 'creator' ist der Ersteller des aktuellen Dokuments.
- </para>
- <para>
- Das Feld 'keywords' enthält die Schlüsselwörter des aktuellen Dokuments.
- </para>
- <para>
- Das Feld 'description' ist die Beschreibung des aktuellen Dokuments.
- </para>
- <para>
- Das Feld 'lastModifiedBy' ist der Benutzername der Person die das aktuelle Dokument
- als letztes geändert hat.
- </para>
- <para>
- Das Feld 'revision' ist die Versionsnummer des aktuellen Dokuments.
- </para>
- <para>
- Das Feld 'modified' ist das Datum / die Uhrzeit der letzten Änderung des
- aktuellen Dokuments.
- </para>
- <para>
- Das Feld 'created' ist das Datum / die Uhrzeit der Erstellung des aktuellen
- Dokuments.
- </para>
- <para>
- Das Feld 'body' ist der aktuelle Inhalt aller Slides und Slidenotizen im
- Powerpoint 2007 Dokument.
- </para>
- <para>
- Die Methode <methodname>loadPptxFile()</methodname> der
- <classname>Zend_Search_Lucene_Document_Pptx</classname> Klasse hat auch ein zweites
- optionales Argument. Wenn es auf <constant>TRUE</constant> gesetzt wird, wird der Inhalt
- auch mit einem Index gespeichert und kann vom Index empfangen werden. Standardmäßig wird
- der Inhalt gesplittet und indiziert, aber nicht gespeichert.
- </para>
- <para>
- Eingelesene Dokumente können vom Programierer mit jedem anderen Feld argumentiert
- werden:
- </para>
- <programlisting language="php"><![CDATA[
- $doc = Zend_Search_Lucene_Document_Pptx::loadPptxFile($filename);
- $doc->addField(Zend_Search_Lucene_Field::UnIndexed(
- 'indexTime',
- time()));
- $doc->addField(Zend_Search_Lucene_Field::Text(
- 'annotation',
- 'Anmerkungstext des Dokuments'));
- $index->addDocument($doc);
- ]]></programlisting>
- </sect2>
- <sect2 id="zend.search.lucene.index-creation.xlsx-documents">
- <title>Excel 2007 Dokumente</title>
- <para>
- <classname>Zend_Search_Lucene</classname> bietet ein Parsing Feature für Excel 2007.
- Dokumente können direkt von einer Excel 2007 Datei erstellt werden:
- </para>
- <programlisting language="php"><![CDATA[
- $doc = Zend_Search_Lucene_Document_Xlsx::loadXlsxFile($filename);
- $index->addDocument($doc);
- ]]></programlisting>
- <para>
- Die <classname>Zend_Search_Lucene_Document_Xlsx</classname> Klasse verwendet die
- <code>ZipArchive</code> Klasse und <code>simplexml</code> Methoden um das Quelldokument
- zu parsen. Wenn die <code>ZipArchive</code> Klasse (vom Modul php_zip) nicht vorhanden
- ist, wird <classname>Zend_Search_Lucene_Document_Xlsx</classname> auch nicht für die
- Verwendung mit dem Zend Framework zur Verfügung stehen.
- </para>
- <para>
- Die <classname>Zend_Search_Lucene_Document_Xlsx</classname> Klasse erkennt die Metadaten
- und den Text des Dokuments. Metadaten bestehen, abhängig vom Inhalt des Dokuments, aus
- Dateinamen, Titel, Untertitel, Ersteller, Schlüsselwörter, Beschreibung, zuletzt
- geändert von, Version, Geändert und Erstellt.
- </para>
- <para>
- Das Feld 'filename' ist der aktuelle Excel 2007 Dateiname.
- </para>
- <para>
- Das Feld 'title' ist der aktuelle Titel des Dokuments.
- </para>
- <para>
- Das Feld 'subject' ist der aktuelle Untertitel des Dokuments.
- </para>
- <para>
- Das Feld 'creator' ist der Ersteller des aktuellen Dokuments.
- </para>
- <para>
- Das Feld 'keywords' enthält die Schlüsselwörter des aktuellen Dokuments.
- </para>
- <para>
- Das Feld 'description' ist die Beschreibung des aktuellen Dokuments.
- </para>
- <para>
- Das Feld 'lastModifiedBy' ist der Benutzername der Person die das aktuelle Dokument
- als letztes geändert hat.
- </para>
- <para>
- Das Feld 'revision' ist die Versionsnummer des aktuellen Dokuments.
- </para>
- <para>
- Das Feld 'modified' ist das Datum / die Uhrzeit der letzten Änderung des
- aktuellen Dokuments.
- </para>
- <para>
- Das Feld 'created' ist das Datum / die Uhrzeit der Erstellung des aktuellen
- Dokuments.
- </para>
- <para>
- Das Feld 'body' ist der aktuelle Inhalt aller Arbeitsblätter im
- Excel 2007 Dokument.
- </para>
- <para>
- Die Methode <methodname>loadXlsxFile()</methodname> der
- <classname>Zend_Search_Lucene_Document_Xlsx</classname> Klasse hat auch ein zweites
- optionales Argument. Wenn es auf <constant>TRUE</constant> gesetzt wird, wird der Inhalt
- auch mit einem Index gespeichert und kann vom Index empfangen werden. Standardmäßig wird
- der Inhalt gesplittet und indiziert, aber nicht gespeichert.
- </para>
- <para>
- Eingelesene Dokumente können vom Programierer mit jedem anderen Feld argumentiert
- werden:
- </para>
- <programlisting language="php"><![CDATA[
- $doc = Zend_Search_Lucene_Document_Xlsx::loadXlsxFile($filename);
- $doc->addField(Zend_Search_Lucene_Field::UnIndexed(
- 'indexTime',
- time()));
- $doc->addField(Zend_Search_Lucene_Field::Text(
- 'annotation',
- 'Anmerkungstext des Dokuments'));
- $index->addDocument($doc);
- ]]></programlisting>
- </sect2>
- </sect1>
|