Sphider

Diese Seite ist nur aus historischen Gründen noch vorhanden. Die Suche mit Sphider wurde im Mai 2008 deaktiviert und durch Live Search ersetzt. Siehe auch Suche auf MSXFAQ

Volltextsuche mit Sphider war für einige Zeit deaktiviert. Siehe auch Hacked

Eine umfangreiche Webseite wie die die MSXFAQ sollte natürlich auch eine brauchbare "Volltextsuche" anbieten können. Da ich die Webseite mit Frontpage bearbeite, liegt die Nutzung der Suchfunktion der Frontpage Erweiterungen natürlich nahe. Leider ist genau diese Funktion nicht auf Unix-Servern für Frontpage verfügbar.

Aus diesem Grund haben ich lange Zeit auf die Suchfunktionen von Google und MSN vertraut und die Suchfunktion links oben hat eigentlich die "Site-Suche" der großen Suchmaschinen aufgerufen. Das hat aber gleich mehrere Nachteile:

  • Externes Ergebnis
    Das Ergebnis der Suche erscheint natürlich im Layout der Suchmaschine und Sie greifen auf eine andere URL zu.
  • Schlechte Auswertung
    Ich kann als Auto schwer sehen, welche "Suchbegriffe" gesucht werden. Auch sehe ich nicht, wie "erfolgreich" ihre Suche gewesen ist.
  • Partielle Ergebnisse
    Das Ergebnis ist nur so gut, wie der Index der Suchmaschine meine Seite enthält. Ich habe oft den Eindruck, dass selbst die Suche nach garantiert vorhandenen Worten trotzdem keine Treffer liefert, auch wenn die Seite im Index ist.
  • begrenzte Aktualität
    Wenn eine Seite geändert oder hinzu gefügt wird, dann ist diese nicht sofort in der Suche enthalten. Der Robot der Suchmaschine muss diese neue Seite erste finden.

Alles in allem also gute Gründe eine eigene Suchmaschine zu finden. Mit dem Wissen, dass die meisten Web Hoster auf Apache und Unix setzen, und die Pakete um mySQL, PHP und Perl bereichen. Also habe ich nach eine kostenfreien Suchfunktion gesucht, die auch von mir ohne umfangreiche mySQL und PHP-Kenntnisse implementierbar ist. Gefunden haben ich Sphider.

Einsatz auf MSXFAQ

Zum Glück sind die die Anleitungen für Sphider sehr ausführlich und sogar eine Übersetzung ins Deutsche ist durch den konsequenten Einsatz von Templates ganz einfach möglich. Allerdings habe ich dann noch noch einige weitere Einstellungen vorgenommen, die ich hier auch für mich dokumentieren.

Vorbereitung beim Provider

Um Sphider nutzen zu können, muss ihr Provider PHP und mySQL anbieten. Sphider muss aber nicht beim gleichen Provider laufen, wie ihre Webseite, Sie können mit Sphider auch andere Webseiten indexieren und durchsuchen. Aber dies beschreibe ich hier nicht weiter.

  • mySQL anlegen
    Zuerst müssen Sie eine mySQL-Datenbank bei ihrem Provider einrichten. Wie legen keine Tabellen o.ä. an. das macht ein Installationsscript von Sphider später. In dieser Datenbank speichert Sphider später die Schlüsselworte, URLs etc. Nach diesem Schritt sollten Sie vier Parameter können
    Hostname: Der Rechner, auf dem die Datenbank läuft, meist "localhost"
    Datenbankname: Der Name der Datenbank. Den können Sie oftmals frei wählen, z.B. "sphider_db"
    Username: Einen Benutzer zum Verbinden mit der Datenbank. Hier wird oft der Provider einen Namen vorgeben
    Kennwort: Das zum Konto gehörige Kennwort. Nutzen Sie bitte ein "eigenes" Kennwort, welches sie nicht anderweitig schon verwenden. Es steht später im Klartext in der PHP-Datei und jeder der Zugriff auf den "Source" hat, kann diese Information nutzen.

Mehr gibt es beim Provider nicht zu aktivieren. Wir gehen davon aus, dass PHP bereits vom Provider installiert und betriebsbereit ist.

Lokale Arbeiten

Die folgenden Dinge passieren auf dem lokalen PC:

  • PHP-Code auspacken
    Nach dem Download wird das ZIP-Archiv einfach komplett mit unterverzeichnissen ausgepackt und in in leeres Verzeichnis der Webseite kopiert. Bei mir ist das entsprechend c:\inetpub\wwwroot\www.msxfaq.de\sphider
  • Anpassung der PHP-Datei "settings/database.php"
    Hier sind die SQL-Parameter für Hostname, Datenbankname, Benutzer und Kennwort in die Konstanten einzutragen.
  • Anpassung der PHP-Datei admin/auth.php
    In dieser Datei muss der username und das Kennwort für den Administrationszugang eingegeben werden. Diese Daten sind nicht in der SQL-Datenbank. Es ist auch nicht möglich mehrere Benutzer einzutragen. Der Standard "admin" und "admin" sollte nicht bestehen bleiben. Ich habe sowohl Kennwort als auch Benutzername geändert.
  • Anpassen der "Common.txt"
    Diese Datei enthält Worte, die nicht in dem Index auftauchen müssen, weil sie "häufig" sind, z.. "und", "oder", "der", "die" etc. Sie würden nur die Datenbank mit Suchbegriffen füllen, die nicht benötigt werden. . Sie enthält im wesentlichen zusätzliche deutschen Füllworte.
  • Ergebnisseite anpassen
    Ich möchte, dass das Ergebnis natürlich im gleichen "Look and Feel" der MSXFAQ erscheint. Sphider arbeitet hier mit Templates. Nehmen Sie einfach eine Seite aus ihrem Web und trennen Sie diese dort, wo das Suchergebnis später erscheinen soll auf. Der Anfang wird dann als "header.html" und das Ende als "footer.html" im jeweiligen Template-Verzeichnis gespeichert.
    Weiterhin habe ich die Suchfunktion nur auf www.msxfaq.net eingebunden. Daher musste ich auch in "search_form.html" in der Zeile 6 die URL fest vorgeben, damit eine suche auf www.msxfaq.de oder www.msexchangefaq.de nicht ins Leere läuft.
  • CSS-Anpassungen
    Das Layout des Ergebnis wird über StyleSheets definiert. Folgende Styles sollten Sie dazu definieren:
    class="searchBox" Layout der Suchboxtabelle
    id ="result_report" DIV-Rahmen um den Ergebnisreport
    id="results" DIV-Rahmen um die Ergebnisse selbst
    class="title" Title der gefundenen Seite
    class="description" Beschreibung zur Seite
    id="other_pages" Verweise auf andere Seiten (Bei mir immer leer)
    class="divline" Trennlinie am ende der Suche (?)
    id="powered_by"  Copyrighthinweis
    Aktuell habe ich in meinem StyleSheet noch nichts dazu ergänzt, da mir das Layout schon so gefällt.
  • Suchoptionen konfigurierenn
    Die komplette Steuerung der Suchfunktion und auch den Start der Indexierung erfolgt über einen Webbrowser und den Aufruf der /Admin/admin.php. Hierüber musste ich die Webseite als URL eintragen und den Index erstellen. Das Script kann auch andere Webseiten indexieren. Man kann sie so seine persönliche Suchmaschine aufbauen. Einige Optionen werden von dem PHP-Skript in die Datei "settings/conf.php" geschrieben. Das erlauben aber viele Webserver nicht. Zum Glück kann man die Einstellungen auch einfach mit einem Texteditor vornehmen und dann die geänderte Datei hoch laden. Interessant sind die die Einstellungen de Sprache und des gewünschten Templates. Ich habe dazu die Originalvorlagen bestehen lassen und unter templates/ einfach ein MSXFAQ angelegt und in der Konfigurationsdatei angegeben.
  • Suche einbinden
    Ich habe zusätzlich die Suchfunktion natürlich auch links in die Navigation eingebunden. Dazu haben ich ein eigenes Suchformular gebastelt. Diesen Schritt sollten Sie aber erst tun, wenn ihre Tests erfolgreich waren. Hier der entsprechende Codeausschnitt:

<form method="get" action="http://www.msxfaq.net/sphider/search.php">
<input type="text" name="query" size="18" maxlength="255" value="Suchbegriff">
<input type="submit" name="btnG" value="&gt;"><br>
<input type="hidden" name="search" value="1">
</form>

  • Teile aus dem Index ausschließen
    Sphider erlaubt über HTML-Kommmentare, bestimmte Teile einer Seite zu verbergen. Dazu muss einfach mit den Kommentaren "<!--sphider_noindex-->" und "<!--/sphider_noindex-->" der Bereich eingeschlossen werden. Ich habe diese Kommentare in meiner Frontpage DWT-Vorlage eingebaut, damit der gemeinsame Rand, das Menü etc. nicht mit indexiert wird. So wird nur der eigentliche Inhalt später erfasst.

Den Erfolg all dieser Einstellungen können Sie natürlich nur auf einem Webserver mit PHP und installierten mySQL testen. Wenn Sie keinen lokalen Server hierzu installieren wollen, dann geht es direkt zum Test auf die Webseite beim Provider.

Einrichtung auf der Webseite

Nun sind wir kurz vor dem Ziel:

  • Seiten "hoch laden"
    Laden Sie einfach alle Seiten mit Frontpage auf den Webserver hoch
  • "Installation" auf dem Webserver durchführen..
    Durch den einmaligen Aufruf der admin/install.php werden die Datenbanken selbst angelegt. Ich musste dazu http://www.msxfaq.net/sphider/admin/install.php eingeben. Theoretisch könnte nun jeder Besucher auch diese Seite anfordern. Aber das Installscript erkennt bereits existierende Tabellen und macht dann einfach nichts mehr.
  • "Konfiguration" auf dem Webserver durchführen
    Sphider ist nicht auf die lokale Webseite beschränkt, sondern kann jede URL indexieren und zum durchsuchen anbieten. Daher ist der erste Schritt auf http://www.msxfaq.net/sphider/admin/admin.php zu gehen, sich anzumelden und die eigene Webseite zu addieren. Dann ist ein Index zu erstellen, der durchaus länger dauern kann
    Über diese Oberfläche könne noch weitere Parameter konfiguriert werden. Das Script versucht dabei aber die Konfiguration nach conf.php
  • Automatisches Index erstellen
    Normalerweise müsste nun die Indexerstellung über einen Zeitplaner regelmäßig gestartet werden. Dies ist bei der MSXFAQ aktuell nicht möglich. So starte ich nach größeren Änderungen manuell eine Indexerstellung über die admin.php. Das ist die Einschränkung, wenn man keinen eigenen dedizierten oder virtuellen Webserver hat.

Nun sollte eigentlich alles für eine Suche "fertig" sein.

Weitere Links