Lisp-Lucene-Package
Das Lisp-Lucene-Package ist eine in Java geschriebene Erweiterung zum Lisp-Package. Es stellt mehrere Funktionen zur Verfügung, mit denen auf einen Lucene Index zugegriffen werden kann.
Das Package ist als Open Source veröffentlicht.
Im Folgenden werden die Funktionen des Packages erläutert.
make-lucene-index
(make-lucene-index path) liefert ein Objekt, mit dem auf einen Lucene Index zugegriffen werden kann. Als Argument muss der Dateisystem-Pfad eines Indexes als Zeichenkette übergeben werden.
add-lucene-document
(add-lucene-document index untokenized tokenized) fügt ein Dokument in einen Index ein. Die Funktion erwartet drei Argumente, den Index (repräsentiert durch ein Objekt, das mit make-lucene-index erzeugt wurde) und zwei Paarlisten, die die Namen und Werte der Felder des Dokuments enthalten. Die Paarlisten sind Listen von zwei-elementigen Listen, die ein Symbol (den Feldnamen) und eine Zeichenkette (den Feldwert) enthalten. Die Feldwerte aus der ersten Paarliste werden nicht in Token zerlegt.
delete-lucene-document
(delete-lucene-document index name value) löscht Dokumente aus dem Index. Gelöscht werden alle Dokumente, die im Feld name (ein Symbol) den Wert value (eine Zeichenkette) haben. Die Funktion liefert die Anzahl der gelöschten Dokumente als Resultat, oder nil, wenn keine Dokumente gelöscht wurden.
get-lucene-document
(get-lucene-document index name value) liefert ein Dokument aus dem Index index, das im Feld mit dem Namen name den Wert value hat. Der Rückgabewert ist nil, wenn kein derartiges Dokument gefunden wurde. Anderenfalls wird das Dokument als Resultat geliefert. Dokumente werden als zwei-elementige Listen dargestellt. Das erste Element der Liste ist eine Liste mit Name-Wert-Paaren der Felder, deren Werte nicht in Token zerlegt wurden. Das zweite Element der Liste ist eine Paarliste mit den Feldern, deren Werte in Token zerlegt wurden.
query-lucene-document
(query-lucene index query max-count) liefert eine Liste von Dokumenten aus dem Index index, die auf die Query query passen. Die Query ist eine Zeichenkette. Es werden höchstens max-count Dokumente zurückgegeben.
Einbinden ins Lisp-Package
In das Lisp-Package können die Funktionen aus dem Lisp-Lucene-Package eingebunden werden, indem der folgende Lisp-Code ausgeführt wird:
(setq make-lucene-index (make-combinator "lisp.lucene.combinator.MakeLuceneIndex" nil))
(setq add-lucene-document (make-combinator "lisp.lucene.combinator.AddLuceneDocument" nil))
(setq delete-lucene-document (make-combinator "lisp.lucene.combinator.DeleteLuceneDocument" nil))
(setq get-lucene-document (make-combinator "lisp.lucene.combinator.GetLuceneDocument" nil))
(setq query-lucene-document (make-combinator "lisp.lucene.combinator.QueryLuceneDocument" nil))
Download
Die Quelltexte unterliegen der Modified Artistic License v1 finden sich in der Version v3 in der Jar-Datei unter dieser URL: http://www.qrst.de/downloads/lisplucenesrc.jar
Zusätzlich werden noch das Collections-Package, das Lisp-Package, das Threads-Package und Lucene 2.0 benötigt.