Eine neue Suchfunktion für die Universität Freiburg

Informationen

Projekt-Typ: Diplomarbeit
Voller Titel: Implementierung einer quellenübergreifenden Suche für die Seiten der Universität Freiburg unter Verwendung von CompleteSearch
Bearbeitungszeit: 1.12.2009 - 16.09.2010
Zusammenfassung:

Diese Arbeit präsentiert die Implementierung einer neuen Suchfunktion für die Webseiten der Universität Freiburg unter Verwendung der Software CompleteSearch als Backend. Dabei wird ein Plugin-System zum einfachen und schnellen Einbinden neuer Quellen in Python entwickelt, welches strukturierte XML-Daten aggregiert. Es wird ein generisches Plugin für Plone-Inhalte vorgestellt, welches das Hinzufügen weiterer Plone-Portale zum Suchindex zusätzlich vereinfacht. Zusammen mit weiteren Plugins für nicht Plone-basierte Quellen wird quellenübergreifende Suche ermöglicht.

Es wird ein Python-Skript als Erweiterung für den Anfrage-Webserver „Zope“ ent- wickelt, welches die XML-Antwort des Backends verarbeitet und die Suchergebnisse an die Benutzerschnittstelle liefert. Die in JavaScript realisierte Sofort- und Facettensuche erlaubt eine benutzerfreundliche Suche über die indexierten Quellen. Dabei wurde der Effizienz der einzelnen Komponenten durch Messungen der Performance und durchgeführte Optimierungen Rechnung getragen.

Das längerfristige Ziel ist es, die existierende Suchseite abzulösen und die bisherige Verwendung externer Suchanbieter für eine quellenübergreifende Suche über alle Subdomains der Universität verzichtbar zu machen.

Stichwörter: CompleteSearch, Plone, Zope, Suche, quellenübergreifend, Plugin, XML, Python, JavaScript
Abstract:

This thesis presents the implementation of a new seach facility for the web pages of the University of Freiburg, using CompleteSearch as a backend. To ensure quick and easy integration of new sources, a plugin system which aggregates structured XML data is developed in Python. A generic plugin for Plone content is presented, which additionally facilitates adding other Plone portals to the search index. Together with other plugins for none-Plone-based sources, a search spanning multiple sources is realized.

realized. To extend the request-webserver ”Zope”, a Python script is developed, which processes the XML response of the backend and delivers the search results to the user interface. The live- and facetted search written in JavaScript, allows a user-friendly search in the indexed sources. Measuring performance and conducting optimizations ensured the efficiency of the individual components.

The long-term goal is to replace the old search page of the University of Freiburg, making the usage of external search providers obsolete by providing a search over all subdomains and various sources.

Keywords: CompleteSearch, Plone, Zope, search, source-spanning, plugin, XML, Python, JavaScript
Betreuerin: Prof. Dr. Hannah Bast
Verfasser: Johannes Schwenk
Download: dipl.pdf
Letzte Aktualisierung der Seite: Thu Sep 16 16:27:23 CEST 2010

Quelltext

Der Quelltext der Arbeit ist im svn unter http://vulcano.informatik.uni-freiburg.de/svn/completesearch-uni-freiburg zu finden. Dort liegt der Quelltext der Datenerfassung, und der Erweiterungen für den Anfrage-Webserver sowie weitere Skripte, diese Seite und die HTML-Dokumentation (s.u.).

Dokumentation

Um diese Seite sowie die Dokumentation für die Datenerfassung und den Anfrage-Webserver bauen zu können, muss epydoc installiert sein, entweder von http://epydoc.sourceforge.net/ oder über den Paketmanager der Distribution (z.B. sudo aptitude install epydoc).

Datenerfassung

Die Dokumentation befindet sich hier.
Die Datenerfassung verwendet in Teilen BeautifulSoup Version 3.0.8, dessen Dokumentation hier zu finden ist.

Anfrage-Webserver

Die Dokumentation des Anfrage-Webservers ist hier zu finden.

Testsystem

Datenerfassung

Die Datenerfassung läuft momentan auf stromboli.informatik.uni-freiburg.de unter /home/schwenk/dipl/completesearch/databases/unifr/buildxml. Das Skript getXML.py in diesem Verzeichnis wird zwei mal am Tag um 14:00 und um 2:00 per Cronjob gestartet. Das Ausgabeverzeichnis in der config.py im selben Verzeichnis ist auf das Unterverzeichnis unifr gesetzt, wo auch der Parser liegt.

Parser und Indexierung

Der Parser liegt unter /home/schwenk/dipl/completesearch/databases/unifr. Dieser und die Indexierung werden nach erfolgreicher Akquirierung der Daten durch getXML.py gestartet und anschließend der CompletionServer mit dem neuen Index unifr.hybrid neu gestartet. Meldungen dieses Prozesses werden derzeit immer an meine E-Mail-Adresse versandt. Eine andere/weitere E-Mailadresse zum testen, kann durch Bearbeiten meiner crontab mit crontab -e eingetragen werden.

Backend

Das Backend läuft ebenfalls auf stromboli.informatik.uni-freiburg.de auf dem Port 12345. Er wird von einem Cronjob minütlich überwacht und gegebenenfalls neu gestartet. Auch hier wird eine E-Mail versandt. Der komplette Befehl zum Starten des Backend lautet derzeit

./codebase/server/startCompletionServer -d 0d -w 0d -S SSSS -r -p 12345 -l unifr.log unifr.hybrid

Dabei ist das Arbeitsverzeichnis /home/schwenk/dipl/completesearch/databases/unifr.

Benutzerschnittstelle

Die Benutzerschnittstelle ist auf einem Plone-Portal zu Testzwecken unter

http://cmsdev.rektorat.uni-freiburg.de:23456/search

zu erreichen. Falls der Server nicht erreichbar ist, bitte ich um eine Benachrichtigung per E-Mail an johannes.schwenk@mw.uni-freiburg.de. Ich werde den Server dann so bald wie möglich neu starten.