CIS/Wintersemester 2000/2001
Proseminar: Tokenisierung von Webseiten
Dozent: Prof. Franz Guenthner
Referent: Wolfgang Mederle
12.2000

Wie man LAPIS um neue Funktionen erweitert

LAPIS — wsnds?

LAPIS ist ein Akronym für Lightweight Architecture for Processing Information Structure, übersetzt also etwa: einfaches Gebilde zum Verarbeiten von Informationsstrukturen. Genaueres dazu auf der Homepage von LAPIS.

Ganz so einfach wie der Name vermuten läßt, ist das Gebilde aber auch wieder nicht. Das kompilierte Programm in Version 0.6 besteht mit unseren Erweiterungen aus 1363 Dateien in 34 Verzeichnissen, die insgesamt fast 8 MByte Platz einnehmen.
Ein make clean reduziert den Platzbedarf auf 3,3 MByte (wohlgemerkt nur Quelltext, 34 Verzeichnisse, 581 Dateien).

Kompilieren

Das Kompilieren gestaltete sich schwieriger als erwartet. Lapis ist in Java 1.1 geschrieben, verwendet aber für seine grafische Oberfläche (graphical user interface — GUI) nicht nur das AWT (Abstract Windowing Toolkit) von Java 1.1, sondern auch den einfacher implementierbaren, wesentlich verbesserten Nachfolger SWING.

Als Entwicklungssystem verwendete ich eine SuSE 6.4 mit Java 2-13 von IBM. Da bei Lapis ein Makefile mitgeliefert wird, versuchte ich erst mal einfach ein make. Ging nicht, da kein jikes gefunden wurde. Jikes ist ein Java-Compiler von IBM. Jikes installiert, ging trotzdem nicht. Nach vielen verschiedenen Versuchen mit einer Auswahl von Java-Entwicklungsumgebungen und Optionen kam ich auf folgende funktionierende Lösung:

  1. Als erstes müssen die Pfade ordentlich gesetzt sein. Bei einem Linux mit der Bourne Again Shell (bash) geht das so (Beispiel):
    med@DS9:~ > CLASSPATH=/opt/IBMJava2-13/lib:/home/med/studium/token/lapis-0.6
    med@DS9:~ > export CLASSPATH

    Ein echo $CLASSPATH sollte dann die richtigen Pfade anzeigen.
  2. Kompilieren der Datei Browser.java (bislang die einzige Originaldatei, die wir modifizieren mußten) mit javac schlägt fehl. Da die Fehlermeldungen meist etwas wie „uses deprecated API” erzählten, suchte ich ein wenig im Programmverzeichnis der IBM-Java-Entwicklungsumgebung und fand neben javac noch ein oldjavac. Und tatsächlich: ein
    med@DS9:~/studium/token/lapis-0.6/lapis/swing > oldjavac Browser.java
    kompilierte die Klasse endlich.
  3. Im Gegensatz dazu übersetzten wir die von uns in Java 2 geschriebenen Klassen mit dem normalen javac.

Die Veränderungen

Wie oben schon beschrieben, beschränkten sich die Änderungen im Quelltext von Lapis auf die Klasse lapis.swing.Browser.java. Der Einfachheit halber habe ich, auch um später einfaches Hinzufügen weiterer CIS-Spezialitäten zu ermöglichen, einen neuen Menüpunkt "CIS" erstellt.
Die dafür nötigen Modifikationen waren nicht schwer: Ich habe einfach den Code, der für die anderen Menüpunkte verwendet wurde, kopiert und angepaßt.
Quelltext von Browser.java als Text (104k) und als HTML mit Syntax-Highlighting (Achtung: 487k!)

CIS-Menü

Die Auswahl „Focused Crawl” ist entweder durch Klicken erreichbar, oder durch Drücken von Alt-C Alt-F, oder direkt durch Strg-F. Es öffnet sich ein Fenster:

Auswahlfenster

In diesem Fenster gibt es drei Knöpfe und eine Textbox. Der dritte Knopf ist selbsterklärend, die beiden ersten öffnen je ein Dateiauswahlmenü, mit dem man die beiden nötigen Textdateien (Domänen und Schlüsselwörter) auswählen kann:

Filechooser

Das Textfeld zeigt an, welche Dateien bereits gewählt wurden:

Auswahlfenster mit Text

Sind beide Dateien gewählt, startet der Focused Crawler. Wenn passende Dateien gewählt wurden, crawlt er kräftig los und spielt seine Ergebnisse regelmäßig ins Browser-Fenster ein:

Crawlend

Quelltext von FocCrawlDialog als Text (4k) und als HTML mit Syntax-Highlighting (22k)

Lapis 0.7

Ein paar Tage, nachdem wir unsere Änderungen in Lapis 0.6 eingebaut hatten, stand Lapis in der Version 0.7 zum Download bereit. Die neue Version hat nicht nur ein paar neue Funktionen (etwa die Möglichkeit, Dokumente direkt im Browser-Fenster zu bearbeiten), sondern auch einen anderen internen Aufbau.
Bytecode und Sourcecode sind nun getrennt und gepackt — die kompilierten Dateien als Jar-Files und die Quellen als Zip-Datei. Leider erleichtert das das Einbinden neuer Module nicht gerade, und so sind wir im Moment dabei, uns einfallen zu lassen, wie wir es am besten bewerkstelligen. Tips sind jederzeit willkommen.

Lapis 0.7 scheint so etwas wie ein Meilenstein in der Entwicklung des Programms zu sein. Auf der Todo-Liste steht nur noch „graduate”, was wohl ein Hinweis darauf sein dürfte, daß der Autor bald mit seiner Abschlußarbeit fertig sein wird, deren größter Teil die Entwicklung von Lapis war.
Sobald wir eine Lösung gefunden haben, wie unser Code in Lapis 0.7 integriert werden kann, wird sie hier zu finden sein.


Wer einen Kommentar zu dieser Seite abgeben möchte oder einen hilfreichen Vorschlag hat, kann sich hier austoben.

Home