Wenn ein Unternehmen zahlreiche MS Excel-, MS Word- oder PDF-Dokumente mit Produktbeschreibungen im Internet bereitstellt, sollten diese Dokumente auch einfach erreichbar sein. Der schnellste Weg für einen Besucher an bestimmte Informationen zu kommen, ist eine Suche.
Der Haken: Dazu müssen alle in MS Excel-, MS Word- und PDF-Dokumenten enthaltenen Worte indiziert und in einer Datenbank gespeichert werden. Das VIO.Matrix Desktop Content Management System unterstützt diese Indizierung mit Hilfe einiger frei verfügbarer Komponenten.
Im Folgenden wird beschrieben wie mit Hilfe von VIO.Matrix sonst nur schwer indizierbare Dokumenttypen über eine Suche in der Webseite gefunden werden können.
VIO.Matrix bietet mit #SEARCH .. #ENDSEARCH bereits eine sehr umfangreiche Suchfunktion an. Mit ihrer Hilfe können Inhalte, die im VIO.Matrix Content-Manager eingegeben wurden, durchsucht und die Ergebnisse aufgelistet werden.
Word- oder PDF-Dokumente werden meist über den Content-Manager ins Projekt eingebunden und hochgeladen. VIO.Matrix erkennt zwar den Dateityp, weiß auch wie die Datei heißt und wann sie eingebunden wurde, liest aber keine weiteren Informationen (z.B. die Überschriften aus einem PDF) aus. Aus diesem Grund ist die Verwendung von #SEARCH zum Durchsuchen der Inhalte dieser Dokumente nicht möglich.
Ziel dieses Artikels ist es zu zeigen wie Informationen dieser Dokumente (MS Word, MS Excel und Adobe Acrobat/PDF) mit dem VIO.Matrix Desktop CMS indiziert und durchsucht werden können.
Um die in diesem Artikel beschriebenen Funktionen nutzen zu können müssen folgende Bedingungen erfüllt sein:
Es ist empfehlenswert einen SSH-Zugang zu dem Server zu besitzen um die Ausführung der Programme kontrollieren zu können.
Prüfen Sie zunächst, ob Sie direkt auf dem Server ein Word-Dokument einlesen können. Gehen Sie dazu folgendermaßen vor:
An der SSH-Konsole sollte nun der textliche Inhalt dieses Worddokumentes zu sehen sein. Wenn dies nicht der Fall ist suchen Sie den genauen Pfad zu abiword auf Ihrem Server heraus und testen es mit diesem erneut.
Auf die gleiche Art und Weise können Sie auch das Auslesen von PDF-Dokumenten und Excel-Tabellen prüfen.
Legen Sie nun noch eine Tabelle in der MySQL-Datenbank an. In dieser werden zukünftig alle Inhalte der Dokumente gespeichert.
Im Folgenden wird davon ausgegangen, dass Dokumente in Elementen abgelegt werden. Das dafür verwendete Dateiauswahlfeld hat den Variablennamen "file". Sollte Ihr Projekt einen anderen Aufbau aufweißen müsste das untenstehende Beispiel nur entsprechend angepasst werden.
Um in VIO.Matrix die Inhalte eines Word-Dokuments zu ermitteln nutzen Sie folgenden Code (passen Sie die in Zeile 2 stehenden lokalen Pfade entsprechend Ihren Anforderungen an):
Ergebnis ist, dass in der Variable "keylist" die Inhalte des Worddokuments mit dem Zeichensatz UTF-8 gesichert sind. Speichern Sie diese Inhalte nun in der oben erstellten Datenbank:
Ebenso können Sie mit Excel-Dateien und PDF-Dokumenten verfahren. Passen Sie dazu in dem oben genannten Code die Bedingung (".xls" statt ".doc" z.B.) und den Aufruf des externen Programms in der zweiten Zeile (analog den Aufrufen im oben stehenden Abschnitt Vorbereitungen) an.
Als Ergebnis stehen nun alle Inhalte von Word-, PDF-Dokumenten und Excel-Dateien in einer einzelnen Datenbanktabelle.
Um die indizierten Dokumente zu durchsuchen rufen Sie die Suchergebnisse über die MySQL-Datenbank ab:
Auf diese Weise können auch alle über VIO.Matrix eingepflegten Inhalte durchsucht werden. Dazu müsste das oben zu sehende MySQL-REPLACE-Statement auch bei den normalen Inhalten ausgeführt werden.
Zur Aufbereitung der Suchergebnisse bietet sich die Verwendung des codec:preview an, welcher den betreffenden Suchbegriff entsprechend hervorhebt. Die Integration für das oben genannte Beispiel könnte wie folgt aussehen:
Der im Abschnitt Dokumente indizieren genannte Code müsste regelmäßig ausgeführt werden. Aus Performancegründen empfiehlt es sich diesen Aufruf gleichzeitig mit der HTML-Dateierstellung von VIO.Matrix durchzuführen.
Analog der in diesem Artikel beschriebenen Vorgehensweise kann man auch mit PHP eine Suche in diesen Dokumenttypen ermöglichen. Zum Ausführen der Tools müsste die exec()-Funktion verwendet werden, die jedoch aus Sicherheitsgründen bei vielen Hostern gesperrt ist. Für Windows bietet PHP die Möglichkeit per COM und .NET Word- und Excel-Dateien zu durchsuchen.