Applikationsentwicklung

Stellen Sie sich vor, Sie haben ein Gefäss vollgepackt mit einer grossen Anzahl digitalisierter Dokumente. Die Suche nach ganz bestimmten Informationen innerhalb dieser Daten ist wie die berühmte Suche nach der Nadel im Heuhaufen. Eine Abteilung des Schweizer Pharmakonzerns Novartis hatte genau dieses Problem und hatte somit einen hohen Bedarf an einer ausgereiften, schnellen und zuverlässigen Suchfunktion.

 

Das Suchen nach bestimmten Informationen innerhalb von Dokumenten in einem Browser klingt zunächst einfach. Klingt es immer noch einfach wenn zusätzlich der Einsatz aktuelle Technologien wichtig ist, der Zugriff auf Dokumente über Benutzerberechtigungen reglementiert und eine Volltextsuche für gewöhnliche Metadaten implementiert sein soll? Wenn die Suchbegriffe in der Ergebnisseite hervorgehoben sein müssen und das Inhaltsverzeichnis einzelner Dokumente einfach visualisiert werden soll? Und das alles noch kombiniert mit einer exzellenten Performance?

 

Abfragen des Index über den Web-Browser

Zu dem Zeitpunkt als die Experten von Canoo ins Spiel kamen, hatte Novartis bereits einen Korpus voller digitalisierter Dokumente und einen Solr-Index (bereitgestellt von Drittanbietern).

In einem ersten Schritt wurde eine Weboberfläche zum Zugriff auf die Daten entwickelt. Dieses UI enthält ein Formular, in welches Benutzer die gewünschten Suchbegriffe eingeben können. Durch das Absenden der Informationen werden die Begriffe im Solr-Index gesucht. Solr wiederum gibt die passenden Dokumente anhand des eindeutigen Dateinamens zurück. Mittels dem Dateinamen wird nun die entsprechende PDF-Datei geladen und im Browser angezeigt.

 

Standard PDF Viewer vs. kundenspezifische Lösung

Aufgrund urheberrechtlicher Bedenken wollte Novartis bestimmte Funktionen wie Drucken oder Speichern deaktivieren. Deshalb war die Verwendung der in gängige Browser integrierten PDF Viewer keine Option.

Die Wahl der Alternative fiel letztendlich auf die Open Source Library PDF.js. Die ausschlagegebenden Gründe waren:
  • Die JavaScript Library kann einfach in ein Webprojekt integriert werden.
  • Da es sich bei der Library um ein Open Source Projekt handelt, können individuelle Anpassungen eigenständig durchgeführt werden.
Der einfachste Weg zur Deaktivierung der ungewünschten Funktionen war es, die entsprechenden CSS- und JavaScript Dateien anzupassen. Im Laufe des Projekts wurden dem Viewer mehrere zusätzliche Option hinzugefügt – und somit eine absolut kundenspezifischen Lösung

 

Hervorragende Performance dank umfangreicher Optimierungen

Bei der ersten Anwendung der Applikation berichteten die Endbenutzer schwerwiegende Performance-Probleme. Diese Probleme traten vor allem im Zusammenhang mit grossen Dokumenten auf – welche rund 10% des gesamten Korpus ausmachten. Der Grund hierfür war eindeutig: Zur korrekten Anzeige muss der PDF Viewer auf der Client-Seite auf den Download des gesamten PDFs auf den Zielcomputer warten.

Folgende Problemlösungen wurden diskutiert:

  1. Minimierung der Dateigrösse jedes einzelnen PDF Dokuments:
    Die Dateigrössen wurden durch Reduktion der Auflösung minimiert. Die Ergebnisse waren jedoch nicht zufriedenstellende.
  2. Individualisierung der PDF.js Library:
    Die grundsätzliche Idee war eine Anpassung von PDF.js, so dass nur die Bytes geladen werden, die für die Anzeige und Hervorhebung notwendig sind. Dies hätte jedoch mehrere Monate zusätzlichen Aufwand für Analyse und Anpassung der Bibliothek bedeutet.
  3. Page Splitting:
    Page Splitting ist ein mehr oder weniger einfacher und schneller Weg zur Reduktion der Last.

Nach eingehender Analyse dieser Optionen entschied sich das Projektteam für das Page Splitting. Jedes PDF wurde Seite für Seite geteilt, was zu einer gewaltigen Performanceverbesserung führte. Allerdings wurde nun nur jeweils eine Seite einer PDF Datei angezeigt – und was ist mit den anderen Seiten eines spezifischen Dokuments?

 

Umschreiben der PDF.js Viewer Komponente

Die Seitennavigation innerhalb von PDF.js basiert auf der Seitenanzahl einer PDF Datei. Durch das Page Splitting wird jedoch nur eine Seite geladen und angezeigt – die integrierte Seitennavigation konnte gar nicht funktionieren.

Um dieses Problem zu lösen, musste die PDF.js Viewer Komponente komplett umgeschrieben werden. Die auf Novartis massgeschneiderte Version beinhaltet nun eine Zoom-Funktion sowie eine Seitennavigation für das vollständige PDF Dokument. Die Stichwortsuche innerhalb einer Seite inklusive Hervorhebung der Suchergebnisse erfolgt über die im Browser integrierte Suchmaschine.

 

Heute und Ausblick auf morgen

Mit dieser neu entwickelten Applikation sind die Benutzer bei Novartis vollauf zufrieden. Einer der nächsten Schritte ist die Definition, wie neue Dokumente hochgeladen und indexiert werden, damit diese ebenfalls durchsucht werden können.

 

Verwendete Technologien

  • Solr (für die Indexierung)
  • Node.js (Server-Programmierung)
  • AWS Cloud (Amazon Web Services, Datenbank & Server)
  • Gulp.js (Build-System)
  • Bootstrap (UI)
  • PDFBox (PDF Handling)

 

X