Digital Library Framework: Installation und Konfiguration, Teil 3

Indizieren per Script

Für diese Funktion nutzt das DLF das Command Line Interface (CLI) von Typo3. Dieses befindet sich im Basisverzeichnis unserer Typo3-Instanz in Form des PHP-Scripts cli_dispatch.phpsh. Bevor diese Funktion jedoch tatsächlich genutzt werden kann, muß in Typo3 ein eigener Backend user angelegt werden, unter dem dieses Script ausgeführt werden will.

Dieser Backend user namens _cli_dlf wird einfach mit Vorgabewerten angelegt. Ein Paßwort benötigt er nicht, weil er sich nicht im Backend einzuloggen braucht. Um jedoch _cli_dlf alle notwendigen Rechte zuweisen zu können, benötigen wir eine eigene Benutzergruppe, weil für einfache Backend user nicht alle hier benötigten Freigabeoptionen zur Verfügung stehen. Dies geschieht unter “Admin Tools / User Admin / Edit Backend user _cli_dlf on root level / General”. Die neue Gruppe wird zweckmäßigerweise “Indexing” genannt:

Anlegen und Ändern der neuen Benutzergruppe “Indexing” innerhalb der Konfiguration des Backend users

Grouptitle” und “Description”

Anschließend werden für die Benutzergruppe “Indexing” die benötigten Zugriffsrechte gesetzt. Dies geschieht in erster Linie in den Auswahllisten, die über den Karteireiter “Access Lists” erreichbar sind:

Include Access Lists” und “Modules”

Tables (modify)”

Nicht so ganz offensichtlich ist es selbst für den erfahrenen Typo3-Administrator, daß der Gruppe “Indexing” in der Auswahlliste “Allowed excludefields” explizit gestattet werden muß, in alle Felder der Tabelle tx_dlf_documents zu schreiben. Sind diese Berechtigungen nicht gesetzt, scheint das Indizieren erst zu funktionieren, man wird dann aber feststellen, daß zu einem neuen Dokument im Typo3-Backend zwar ein neuer Datensatz entstanden ist, dessen Felder jedoch leer sind. “Tables (modify)” bedeutet hier nur, daß neue Datensätze angelegt werden können, und nicht, daß auch in die Spalten geschrieben werden darf! (Ich muß auch zugeben, daß dieser Erkenntnis bei mir eine “lustige” längere debug session im Typo3-Kern vorausging.)

Ohne “Allowed excludefields” keine Werte in Spalten!

DB mounts”

Nach dem Speichern dieser Einstellungen sind wir bereit zum Indizieren mittels Script. Wir nehmen an, das Basisverzeichnis unserer Typo3-Instanz sei /srv/www/htdocs/presentation/typo3:

cd /srv/www/htdocs/presentation/typo3
./cli_dispatch.phpsh dlf index -pid 136 -core dlfCore0 -doc http://colorado.sbb.spk-berlin.de/fileadmin/mets/PPN664245188.xml

Die Parameter, die dem Aufruf übergeben werden, haben folgende Bedeutung:

  • dlf – wir beziehen uns auf die Extension Digital Library Framework
  • index – wir wollen indizieren
  • -pid 136 – die PID des Folders, in dem sich unsere DLF-Plugins befinden (“DLF configurations”, siehe den zweiten Teil dieser Anleitung)
  • -core dlfCore0 – wir wollen unseren Default Index verwenden
  • -doc http://... – die URL einer METS-Datei

Für die Staatsbibliothek zu Berlin wünschte ich mir allerdings zusätzliche Funktionalität und habe daher ein Helperscript geschrieben, das es erlaubt, von dem Host aus, auf dem das DLF läuft, per WebDAV ein dafür freigegebenes bzw. konfiguriertes Verzeichnis auf einem anderen Host auszulesen und anschließend den DLF-Indexer mit den URLs darin enthaltener METS-Dateien aufzurufen. Dieses Helperscript kann dann in regelmäßigen Abständen von einem Crobjob getriggert werden, um so eine Überwachung des Verzeichnisses, in das die METS-Dateien neuer Digitalisate geschrieben werden, zu realisieren. Hier der Download.

Es residierten ja bereits Rechercheinstrument (Solr) und Anzeigeinstanz (Typo3) auf getrennten Hosts und die METS-Dateien liegen hier bei der Staatsbibliothek zu Berlin ihrerseits auf einem weiteren Host. Daher war es naheliegend, vermeiden zu wollen, daß dieser dritte Host per Fibre Channel oder ähnlichem fest mit dem Typo3-Host verdrahtet werden muß.

Das Script ist in Python geschrieben und verwendet die “Python client-side WebDAV Library” des Deutschen Instituts für Luft- und Raumfahrt (DLR), die auf dem Typo3-Host installiert werden muß. Demnächst werde ich das Script um folgende Funktionen erweitern:

  • Überprüfung, ob die zu indizierende METS-Datei bereits indiziert wurde und nach dem Indizieren, ob dieses wirklich erfolgreich war
  • Verschieben fertig indizierter, fehlerhafter und neu indizierter METS-Dateien in spezielle Zielordner
  • Erkennen neuer Kollektionen
  • Schreiben einer Sitemap, die dafür sorgen soll, daß Bots von Google, Bing etc. nur die URLs der Präsentation aufrufen, in denen für externe Suchmaschinen relevante Informationen liegen – konkret Inhaltsverzeichnisse und Katalogdaten – und keinen unnötigen Traffic durch den Aufruf zahlreicher “Einzelseiten” unserer Digitalisate verursachen
Add post to: Delicious Reddit Slashdot Digg Technorati Google
(already: 46) Comment post

Comments

No comments for this post

Required. 30 chars of fewer.

Required.

captcha image Please, enter symbols, which you see on the image