Suchindex mit Lucene für PHP erstellen
Hier erfahren Sie an einem Beispiel mit Code, wie Sie mit Lucene für PHP einen Suchindex erstellen können.
Lucene ist ein hervorragendes Suchmaschinen-Framework mit dem Sie eigene anspruchsvolle Suchmaschinen für Ihre Website oder Ihr Intranet umsetzen können. Ich möchte nicht allzu sehr auch die Theorie und Verfahren für Suchmaschinen eingehen, aber einige wenige Worte muss ich verlieren, damit Sie das folgende Beispiel verstehen.
Suchmaschinen indexieren Dokumente. Diese Dokumente können Websites, Word-Dateien, PDFs oder Personen in einem LDAP-Verzeichnis sein. Zu jedem Dokument können sog. Felder gespeichert werden. In der Programmierung könnte man das als Attribute verstehen. Websites haben typischerweise die Felder Titel, Description, URL und Text. Im Suchindex befinden sich also eine Anzahl von Dokumenten die wiederum Felder haben.
Im folgenden müssen wir uns genau darum kümmern. Einen Index erstellen, Dokumente erzeugen und Felder zuordnen. Los gehts:
Zuerst erstellen wir einen leeren Suchindex im Dateisystem. Der Pfad ist das erste Attribut des Konstruktors.
$index = new Zend_Search_Lucene('/home/cmsdev/searchindex' );
Damit ist unser Index erzeugt. Nun müssen wir ein Dokument erstellen. Das geht so:
$doc = new Zend_Search_Lucene_Document();
Diesem Dokument können wir nun Felder zuordnen. Es würde jedoch zu weit führen an dieser Stelle die unterschiedlichen Feldtypen aufzuzählen. Nehmen wir einfach einen Standardfeldtyp für Text:
$doc->addField( Zend_Search_Lucene_Field::Text('title', 'cmsdev Content-Management, Blogs und Wikis' ));
Nachdem unser Dokument nun ein Feld hat und auch nicht mehr bekommen soll, können wir es dem Index hinzufügen:
$index->addDocument($doc);
Damit unser Index nun vollständig geschrieben und genutzt werden kann, müssen wir den Vorgang noch abschließen. Das geschieht folgendermaßen:
$index->commit();
Damit haben wir unseren Suchindex mit den enthaltenen Dokumenten gespeichert und können ihn zum Suchen nutzen. Wie das geht, wird demnächst in diesem Blog erläutert. Abonnieren Sie den meshed News-Feed, um den Artikel nicht zu verpassen.
Wenn Sie Anregungen oder Kommentare haben, hinterlassen Sie bitte einen Kommentar.
Mitdiskutieren