Sprung zum Inhalt

Webdesign nach Maß von webdesign weisshart

Das Suchscript
Häufige Fragen - FAQ

Suchbegriffe: php suchscript

Warum geht das Suchscript bei mir nicht?

Bitte grundsätzlich systematisch vorgehen!

  1. Die readme.txt gelesen?
  2. Diese FAQ gelesen?
  3. Im Weblog gelesen?
  4. Wenn das alles nicht hilft:
    Frage im Support-Forum stellen.
    Aber bitte dran denken: "Geht nicht" ist keine Fehlerbeschreibung!
    Und am besten kann bei der Fehlersuche geholfen werden, wenn eine URL genannt wird.
  5. Telefonische Anfragen: Ich freu mich zwar über jeden Anfruf, aber in der Regel lassen sich am Telefon Fehler nicht so beschreiben, daß man die Ursache finden könnte. Also bitte nur im Support-Forum.

Warum findet das Script nichts?

Auch in diesem Fall bitte systematisch vorgehen!

  1. Das Script mit allen Dateien unverändert installieren.
    Und zwar in dem Verzeichnis, das durchsucht werden soll! Das ist in der Regel das Stammverzeichnis, in dem auch die Indexdatei des Webprojekts steht.
    Die Installation in einem Unterverzeichnis funktioniert unter keinen Umständen!
  2. in der search_config.php die Zeile
    error_reporting(0);
    ändern in
    error_reporting(E_ALL);
    Die dann eventuell angezeigten Fehlermeldungen können bei der Fehlersuche behilflich sein.
  3. Erst, wenn es so läuft, schrittweise die search_config.php editieren.
  4. Gibt es überhaupt Dateien, die gefunden werden können? Sind die richtigen Dateieindungen in der search_config.php unter $dat_type aufgelistet?

Das Script liefert merkwürdige Ausgaben

Die Ausgabe zeigt leere Listenpunkte, nur "..." oder ähnliches.

Häufige Ursache: unsauberer html Code der durchsuchten Seiten.

Versuch doch mal, den Code Deiner Seiten zu validieren. W3C Markup Validation Service zeigt Dir alle Fehler in Deinem Code.

Meine Seiten werden aus Datenbanken generiert. Kann das Script auch diese Seiten durchsuchen?

Nein.

Das Script durchsucht den Quelltext der Seiten. Und wenn im Quelltext Datenbankaufrufe stehen, dann wird im besten Fall der Quelltext dieses Datenbankaufrufs gefunden.

Läuft das Suchscript auch lokal auf meinem Rechner?

Nein!
Es sei denn, Du hast lokal einen Server und PHP installiert. Aber dann wirst Du diese Frage vermutlich nicht stellen.

Kann das Script auch pdf Dateien durchsuchen?

Nein.
Kurze Erklärung:
Die Standardinstallation von PHP arbeitet nicht mit pdf zusammen. Hierzu ist die Installation spezieller Bibliotheken erforderlich. Und da dies in der Regel nicht vorausgesetzt werden kann, wäre das Script nicht mehr portabel.

Wieviele Seiten kann das Script durchsuchen?

Als Faustregel:
Einige hundert Seiten werden in akzeptabler Zeit durchsucht. Auf einem schnellen Server dürfen es auch gerne mehr als 1000 Seiten sein.
Typische Werte für die Suchdauer: 300 bis 1000 Seiten pro Sekunde

Zur Geschwindigkeit:

Das Script durchsucht die angegebenen Verzeichnisse live. Das hat den Vorteil, daß keine Indexierung erforderlich ist, und alle Änderungen an einzelnen Dateien jeweils sofort gefunden werden. Aber ab einer bestimmten Anzahl von Dateien dauert die Suche dadurch zwangsläufig länger, und kann die maximale Ausführungszeit, die der Server für Scripte erlaubt, überschreiten. (in der Regel sind das 30 oder 45 Sekunden, kann aber auch auf weniger eingestellt sein)

Um die Suche auf umfangreichen Sites zu beschleunigen, prinzipiell folgendermaßen vorgehen:

In der search_config.php:

$dat_type = "htm|html|php|txt";

Hier wirklich nur benötigte Dateitypen eingeben. txt z.B. ist in der Regel nicht erforderlich.

Die zu durchsuchenden Verzeichnisse explizit angeben, nach dem Muster $dirs = array('./','./subdir/','./subdir/subsub/');
und $alledirs = false; belassen ($alledirs = true; kann die Suche extrem ausbremsen)

Ein schneller Server ist natürlich hilfreich. Massenhoster wie z. B. 1&1 oder Strato schneiden diesbezüglich in der Regel nicht gut, teilweise sogar katastrophal schlecht, ab. Die Folge kann dann sogar ein Abbruch der Suche sein mit "Fehler 500 - Internal Server Error"

Warning: fopen(searchlog.txt): failed to open stream: Permission denied in ...
oder
Warning: flock(): supplied argument is not a valid stream resource in
oder ähnlich.

Das Anlegen der Logdatei searchlog.txt bereitet auf manchen Systemen Probleme.
Statt das Script abzubrechen, wird in diesem Fall lediglich eine Fehlermeldung ausgegeben.
Abhilfe in diesem Fall:

  1. Manuell zwei Datein namens searchlog.txt und reload.txt anlegen. (CHMOD 666)
    wenn auch das nicht hilft:
  2. in der search_config.php error_reporting(0); setzen, um die Anzeige der Warnung zu unterdrücken. Das Script arbeitet dann ohne Logdatei.

Dieses Script erfordert PHP Version 4.3.0 oder höher!

Diese Meldung erscheint, wenn PHP zwar installiert ist, aber in einer älteren Version.

Abhilfe schaffen kann in diesem Fall nur der Provider.

Dein Server unterstützt kein PHP!

Genau so ist es!
Die Meldung erscheint auch dann, wenn versucht wird, das Script lokal, ohne lokalen Server laufen zu lassen, oder wenn versucht wird, das Script innerhalb einer html-Datei aufzurufen (es sei denn, der Server ist entsprechend konfiguriert, auch html-Dateien zu parsen).

Das Script findet bestimmte Wörter nicht. Es wird nur »Sie suchen nach "Suchbegriff" ...« angezeigt, und dann passiert nichts weiter.
oder
Warning: Cannot modify header information - headers already sent by ...

Dieser Fehler kann auftreten, wenn folgende 3 Bedingungen erfüllt sind:

  • Das Suchformular (oder die Datei suchen.php) wurde in eine andere Seite eingebaut.
  • in der search_config.php ist $jump = true; eingestellt.
  • Die Suche würde nur einen (1) Treffer erzeugen (der aber nicht angezeigt wird, weil die Suche "einfriert").

Abhilfe:
In die Seite, in der das Suchformular eingebaut ist, ganz oben folgende Zeile einfügen (wirklich GANZ oben, es darf nicht einmal ein Leerzeichen oder eine leere Zeile davor stehen!):

<?php ob_start(); ?>

Erklärung dieser Funktion im PHP Manual

Wenn ich die search_config.php aufrufe, kommt nur ein leerer Bildschirm.

Die search_config.php ist keine Anwendung, die im Browser angezeigt wird.
Sie muß vielmehr mit einem Text-Editor (z.B. Notepad) editiert werden.

Warum öffnet sich für die Suchergebnisse ein neues Fenster?

Das Script muß sich selbst aufrufen.

Was heißt das?

Wenn Ihre Seite mit dem Suchformular z.B. suchscript.php heißt, dann muß die <form> Zeile, die das Script aufruft, folgendermaßen lauten:
<form id="search" method="get" action="suchscript.php">

Ich möchte das Suchscript in meine Site integrieren, und dabei das Design meiner Seiten übernehmen ...

... habe aber kaum PHP Kenntnisse.
Hier gibt es eine Schritt für Schritt Anleitung.

Das highlighting, die farbliche Markierung der Treffer, geht nicht.

  1. Sieht Ihr <body> Tag so aus:
    <body onload="irgendwas">?

    Dann kann's nicht gehen! Raus mit dem onload! Häufig wird dieses onload von WYSIWYG Editoren wie z.B. Dreamweaver geschrieben, ohne daß Sie es auf Ihren Seiten wirklich brauchen.
    Und wenn Sie das onload Zeugs unbedingt brauchen? Nun, dann geht eben das highlighting nicht.
    Es sei denn, Sie schauen sich an, wie man onload Funktionen richtig einbindet. Bei: ichwill.net

    Achtung! Dieser Hinweis gilt sowohl für die Suchergebnisseite, als auch für die Trefferseiten. Das kann also unter Umständen durchaus in Arbeit ausarten.
  2. Sind die CSS Klassen .searchword0 bis .searchword9 entsprechend formatiert? (Damit auch "mehrere Worte suchen" farblich unterschiedlich gekennzeichnet wird.)
    Ein Beispiel dafür ist in der mitgelieferten Datei suchen.php enhalten.
    Und auch dieser Hinweis gilt wieder sowohl für die Suchergebnisseite, als auch für die Trefferseiten. Im Falle von CSS geht das natürlich mit einer zentralen, ausgelagerten CSS Datei einfacher.
  3. Das highlighting auf der Suchergebnisseite geht nicht:

    Ist die Datei wdw_suche.js auf dem Server? im Verzeichnis wdw_suche, bzw. im gleichen Verzeichnis wie die Datei (search.php)?

    Wird wdw_suche.js aufgerufen? Dazu muß in der Datei mit dem Suchformular (suchen.php) die Zeile
    <script src="wdw_suche/wdw_suche.js" type="text/javascript">
    </script>
    stehen.
  4. Das highlighting auf den Trefferseiten geht nicht:

    Ist die Datei wdw_suche.js auf dem Server? im jedem Verzeichnis, das durchsucht wird?
    (Natürlich kann das Script wdw_suche.js auch nur einmal auf dem Server abgelegt werden. Dann müssen aber die Pfade zum Aufruf des Scripts im folgenden Code entsprechend angepaßt werden.)

    Wird wdw_suche.js aufgerufen? Dazu muß jede Datei die Zeile
    <script src="wdw_suche/wdw_suche.js" type="text/javascript">
    </script>
    enthalten.

Wie formatiere ich die Ausgabe?
Wie kann ich das Aussehen der Ausgabeseite beeinflußen?

Die Ausgabe wird mit CSS formatiert. Ein Beispiel für die Formatierung ist in der Datei suchen.php enthalten.

Die folgenden Angaben sind für die Gestaltung der Listenausgabe zuständig:

p, li {
	font-size: .8em;
	line-height: 1.2em;
	color: #111;
}
li {margin: .8em 2.5em;}

und für die Zeile mit der Pfadangabe und dem Änderungsdatum diese Zeile:

.mod {display: block; font-size: .8em;}

Ich möchte, daß sich beim Anklicken des Credit-Links zu webdesign weisshart ein neues Fenster öffnet.

Lesen Sie bitte meine persönliche Meinung dazu in meinem Weblog. Vielleicht findet sich dort auch die Lösung für Ihren Wunsch.

Wie update ich auf die neueste Version des Suchscripts?

Das Script wird ständig weiterentwickelt und um neue features erweitert. Siehe readme.txt
Ein update kann daher sinnvoll sein.

Vorgehensweise:

Ab Version 2.0 gibt es ein neues Update-Verfahren.

  1. Eine Datei namens personal_inc_search_config.php erstellen. Diese Datei muss alle Variablen enthalten, die von der Standard search_config.php abweichen.
    Als Ausgangspunkt kann eine alte, personalisierte Datei search_config.php umbenannt werden in personal_inc_search_config.php.
    Oder, um mit einer leeren personal_inc_search_config.php zu beginnen, die im zip-Archiv enthaltene Datei personal_inc_muster_config.php verwenden, in personal_inc_search_config.php umbenennen, und die persönlichen Variablen übernehmen.
    Dieser Schritt muss nur einmalig ausgeführt werden. Bei zukünftigen Updates bleibt die personal_inc_search_config.php erhalten, und wird nicht überschrieben.
  2. Alle Dateien aus dem zip-Archiv unverändert auf den Server laden; alte Dateien überschreiben lassen.
  3. Fertig.