2189441

So installieren Sie eine Indexsuche für Ihre Website

24.09.2016 | 09:33 Uhr |

Auch für selbst gebaute HTML-Seiten gibt es eine schnelle Suchfunktion. Sie benötigen dafür nur ein Tool für die Indexerstellung und ein paar Javascripts.

Content-Management-Systeme (CMS) bringen in der Regel eine Suchfunktion mit, die den Besuchern ein Suchfeld anbietet. Das stellt kein Problem dar, weil die meisten Inhalte in einer Datenbank liegen. Besteht eine Website dagegen aus statischen, also nicht aus datenbankgenerierten HTML-Seiten, ist eine Suchfunktion nicht so einfach zu realisieren. Eine Möglichkeit ist es, die Google-Suche https://cse.google.de in die Website zu integrieren. Das setzt allerdings voraus, dass Google alle Seiten bereits indexiert hat. Neue Seiten werden erst einmal nicht berücksichtigt. Dieser Artikel geht einen anderen Weg mit einem eigenen Indexer und einer Suchfunktion über Javascript. Das Verfahren eignet sich vor allem für Inhalte, die aus vielen einzelnen Seiten bestehen, etwa wissenschaftliche Arbeiten, Dokumentationen oder Produktkataloge.

1. Informationen suchen und finden

Im Zeitalter von Google & Co mag man sich kaum vorstellen, dass man etwas nicht findet. Aber schon auf der eigenen Festplatte werden Sie unter Tausenden von Dateien einen bestimmten Inhalt ohne spezielle Suchtools nicht lokalisieren können. Unterschiedliche Dateiformate wie DOC, ODT oder PDF erschweren die Suche. Bei einer Website, die nur aus HTML-Dateien besteht, ist das einfacher. Trotzdem wäre auch hier eine Suche direkt in den Dateien meist zu langsam. Die Suche lässt sich mit einem Index deutlich beschleunigen. Dieser enthält alle Wörter aus den indexierten Dokumenten und Verweise zu den Fundstellen.

Der von uns verwendete HTML-Indexer wurde ursprünglich für Dokumentationen und Handbücher im HTML-Format unter dem Namen Webhelp-Indexer entwickelt. Da er keinen Webserver benötigt, eignen sich die erzeugten Dateien auch für die Auslieferung auf DVD oder USB-Stick.

Den Indexer und die Beispieldateien finden Sie unter www.pcwelt.de/PF8JZA . Den von uns angepassten Java-Quellcode des Webhelp-Indexers finden Sie über www.pcwelt.de/druQN1 , den Originalcode auf http://sourceforge.net/projects/docbook .

Lese-Tipp: HTML-Crashkurs

2. HTML-Indexer installieren und testen

Entpacken Sie das heruntergeladene ZIP-Archiv in Ihr Home-Verzeichnis. Es enthält den Ordner „lib“ mit den erforderlichen Java-Tools, unter „doc“ liegen die Beispieldateien, und das Script „indexer.sh“ dient der Indexerzeugung. Machen Sie es in einem Terminalfenster mit folgender Befehlszeile ausführbar:

chmod 755 indexer.sh

Falls nicht vorhanden, installieren Sie eine Java-Laufzeitumgebung (JRE). Bei Linux Mint und Ubuntu beispielsweise heißt das Paket „default-jre“. Probieren Sie den Index aus, indem Sie ihn auf der Kommandozeile starten:

./indexer.sh

Das Bash-Script erfasst rekursiv alle HTML-Dateien unter „doc“. Den Suchindex legt es unter „doc/search“ ab. Um die Suche auszuprobieren, öffnen Sie die Datei „doc/index.html“ im Browser. Tippen Sie einen Suchbegriff ein, beispielsweise „student“. Zwischen Groß- und Kleinschreibung wird nicht unterschieden. Auf der Seite mit den Suchergebnissen erscheinen die Überschriften der Seiten, in denen der Begriff enthalten ist. Dahinter steht jeweils eine Punktanzeige, die die Relevanz symbolisiert, also die Häufigkeit des Suchbegriffs auf der jeweiligen Seite. Wenn Sie den Link zu einer Seite anklicken, werden die Fundstellen hervorgehoben. Sie werden bemerken, dass nicht nur „Student“, sondern auch „Studenten“ markiert ist. Der Indexer benutzt einen Stemming-Algorithmus, der versucht, die Varianten eines Wortes auf den Wortstamm zurückzuführen.

Nur Inhalte, die von den div-Tags mit id="content_idx" umgeben sind, werden berücksichtigt.
Vergrößern Nur Inhalte, die von den div-Tags mit id="content_idx" umgeben sind, werden berücksichtigt.

3. Webseiten für die Indexierung vorbereiten

Benennen Sie das Beispielverzeichnis „doc“ um, etwa in „doc.bak“, und erstellen Sie einen neuen Ordner „doc“. Kopieren Sie die Ordner „common“ und „search“ von „doc.bak“ nach „doc“. Damit der Indexer seine Aufgabe erledigen kann, müssen Sie Ihre Webseiten dafür anpassen. Inhalte, die der Indexer berücksichtigen soll, müssen innerhalb der Tags „<div id=“content_idx“>...</div>“ stehen. In der Regel werden Sie Artikel mit diesen Tags umgeben, nicht aber Fußbereiche oder andere Inhalte, die sich auf jeder Seite wiederholen. Bauen Sie in den Head-Tag folgende Zeile ein:

<meta name="description" content="Beschreibung" />

„Beschreibung“ ersetzen Sie durch einen oder zwei Sätze mit Informationen zur jeweiligen Seite. Dieser Text erscheint dann im Suchergebnis unter dem Seitentitel. Kopieren Sie die HTML-Dateien in den Ordner „doc“ und starten Sie den Indexer:

./indexer.sh

Sehen Sie sich „search/htmlFileInfo-List.js“ in einem Editor an. Die Datei enthält die Liste der indexierten Dateien. „index-1.js“, „index-2.js“ und „index-3.js“ enthalten die indexierten Wörter.

Javascripts einbauen: Damit sich die Suchfunktion in allen Webseiten aufrufen lässt, bauen Sie einige Javascript-Verweise ein. Öffnen Sie die Datei „index.html“ aus dem Backupordner „doc.bak“ in einen Editor und kopieren Sie den Scriptblock unter „<!-- Suche -->“ in Ihre HTML-Dateien.

Das Suchformular („<div id="searchDiv">“) können Sie ebenfalls übernehmen. Es ruft die Javascript-Funktion „Verifie (searchForm)“ aus „nwSearchFnt.js“ auf. Diese prüft zuerst, ob der Suchbegriff wenigstens ein Zeichen lang ist, und gibt andernfalls eine Fehlermeldung aus. Der Suchbegriff wird dann in einem Cookie gespeichert. Die eigentliche Suche und die Anzeige der Ergebnisse erfolgt über „searchresult.html“, die als Nächstes automatisch geladen wird. Diese muss die Zeile „<div id="searchresult"></div>“ enthalten, damit die Suche funktioniert. Kopieren Sie die Datei aus dem Beispielordner und passen Sie sie für Ihre Website an. Beachten Sie in „searchresult.html“ das etwas geänderte Suchformular. Der Javascript-Aufruf enthält hier, anders als bei den übrigen Seiten, nur den Scriptaufruf und keine Weiterleitung.

4. Indexer-Script individuell anpassen

Das Script „indexer.sh“ enthält hauptsächlich die Pfadangaben zu den nötigen Java-Tools, wie Saxon, Xerces und Lucene. Um diese müssen Sie sich nicht weiter kümmern, weil die zugehörigen Jar-Dateien im Ordner „lib“ liegen und Sie diese nicht selbst installieren müssen. Bei Bedarf können Sie hinter „OUTPUT_DIR=“ den Namen des Ordners mit den HTML-Dateien ändern. Wenn Ihre Website englischsprachige Texte bietet, geben Sie hinter „-DindexerLanguage=“ den Wert „en“ an. Weitere verfügbare Sprachen sind französisch („fr“), Japanisch („ja“) und chinesisch („zh“). Die nicht immer fehlerfreie Stemmer-Funktion (-> Punkt 2) können Sie mit „-DdoStem=false“ abschalten.

Lese-Tipp: Validierungs-Tools für HTML, CSS und Javascript

PDF-Dateien durchsuchbar machen

Der vorgestellte Indexer berücksichtigt nur HTML-Dateien. Andere Formate müssten Sie daher in HTML umwandeln. Bei PDF-Dateien funktioniert das mit dem Tool pdftohtml. Es ist bei Ubuntu und verwandten Systemen im Paket „popplerutils“ enthalten. Starten Sie das Tool in einem Terminalfenster in folgender Form:

pdftohtml datei.pdf datei.html

Es gibt mehrere Optionen, um die Ausgabe anzupassen.

Rufen Sie das Tool ohne Parameter auf, um eine Übersicht zu sehen, oder verwenden Sie man pdftohtml. Probieren Sie beispielsweise die Option „-c“ aus.

Das Originalformat wird dabei soweit wie möglich beibehalten, indem Bilder einen seitenfüllenden Hintergrund bilden. Bei Bedarf können Sie von den umgewandelten PDFs aus auf die Originaldatei verlinken. Ein Beispiel dafür finden Sie im Ordner „doc/verwandlung“.

0 Kommentare zu diesem Artikel
2189441