PHP-Suchmaschine

Diese PHP-Suchmaschine basiert auf dem Projekt "Kleine rekursive Suchmaschine" von Werner Zenk, der seine Arbeit vor einiger Zeit eingestellt hat, und stellt zunächst nicht mehr dar, als das ich meine persönlichen Vorstellungen und Wünsche mit eingebaut habe. Ob irgendwann und inwieweit Updates folgen wird sich zeigen, denn aktuell funktioniert die Suchmaschine exakt so, wie ich es benötige.
Diese Suchmaschine besteht abgesehen von einer CSS-Datei nur aus einem einzigen php-Script welches ohne Datenbank, das oder die in der Konfiguration angegebenen Verzeichnisse, rekursiv nach dem jeweiligen Suchmuster durchsucht. Bei Dateien welche auf Text beruhen, wie z.B. (text/html, text/plain...) wird auf der Ergebnisseite bei Erfolg, ein Textausschnitt der jeweiligen Datei angezeigt, in welchem das Suchmuster auf Wunsch hervorgehoben werden kann. Auf meiner Seite helpdesk.schabau.eu kann man sich diese Suchmaschine in vollem Umfang ansehen. Wer die Suchmaschine auf seiner Webseite einsetzen möchte, kann hier die aktuelle Version der PHP-Suchmaschine herunterladen und Frei verwenden.

Für die Funktion der Suchmaschine wird zwingend PHP 8.0.25 oder höher benötigt und Vorausgesetzt.
Wer die "Kleine rekursive Suchmaschine" von Werner Zenk kennt - aber auch wer sie nicht kennt - findet hier die Veränderungen, welche ich habe einfließen lassen.

Die Angabe der "Nichttextdateien" ist nicht mehr Nötig.
Es muss nur noch angegeben werden, welche Dateitypen in die Suche eingeschlossen werden sollen. Die Erkennung und Einordnung wird anhand des MIME-Type automatisch durchgeführt.
Unterverzeichnisse können von der Suche ausgeschlossen werden.
Hat man in dem zu durchsuchenden Verzeichnis Unterordner mit Vorlagen oder Seiten die noch in Arbeit sind, kann dieses Verzeichnis inkl. dessen Unterverzeichnisse, von der Suche ausgeschlossen werden. So müssen Verzeichnisse, die im Grunde zusammengehören, nicht nebeneinander abgelegt werden.
Das Speichern der Suchanfragen kann zusätzlich als .html erfolgen.
Speichert man die Suchanfragen zur Auswertung in eine Datei, kann jetzt zusätzlich eine .html Datei erstellt werden. Mit der Auswertung lässt sich z.B. Erkennen, ob man bei der einen oder anderen Datei den META-Tag "Keywords" anpassen sollte.
In der Datenliste werden nur die 5 häufigsten Sucheingaben aufgeführt.
Verwendet man die Datenliste im Eingabefeld, werden nur die 5 häufigsten bisherigen Sucheingaben aufgelistet. An erster Stelle erscheint dabei die häufigste Suchanfrage und in absteigender Reihenfolge die weiteren.
Die Suchergebnisse können auf mehrere Ergebnisseiten aufgeteilt werden.
Man kann optional wählen, ob die Suchergebnisse auf einer Seite angezeigt werden, oder ob die Ergebnisse auf mehrere Seiten verteilt werden. Es kann bestimmt werden, wie viele Suchergebnisse pro Seite angezeigt werden und bei Bedarf erscheint unter den Suchergebnissen eine Navigation (ähnlich Google) zu den Folgeseiten.
Die Wartezeit der automatischen Weiterleitung kann definiert werden.
Wählt man die automatische Weiterleitung, die bei nur einem Suchergebnis automatisch zur Zielseite weiterleitet, möchte man dem Gast evtl. etwas mehr Zeit lassen den Textauszug zu lesen. Die Zeitspanne bis zur automatischen Weiterleitung kann nun selbst definiert werden.
Für die Anzeige von META-Tags können nun Bereiche definiert werden.
Die Anzeige von META-Tags war nur bedingt nutzbar, da nur die Option "Ja oder Nein" gegeben war. Hat man sich für "Ja" entschieden, so wurden alle META-Tags, unabhängig derer Sinnhaftigkeit für die Ergebnisseite, dort angezeigt. Es können nun META-Bereiche definiert werden, die Angezeigt werden sollen. Andere Bereiche werden nicht angezeigt.
Der Bereich <title> wurde aus dem Textauszug entfernt.
Wurde eine Suche durchgeführt, bei der das Suchwort im Seitentitel oder am Begin der Seite gefunden wurde, gab es unschöne Textdoppelungen, da der Seitenlink auf der Ergebnisseite den Seitentitel trägt und der Seitentitel zudem im Textauszug enthalten war. Der HTML-Tag <title> wird nun aus dem Textauszug der Ergebnisseite entfernt, um dies zu vermeiden.
Auf der Ergebnisseite wird das Suchmuster auch im Seitenlink markiert.
Es ist nur eine optische Geschichte, aber auf der Ergebnisseite wird das Suchwort nun auch im Seitenlink markiert, wenn es dort vorgefunden wurde.
Ausgelagerte CSS-Datei mit eigenen IDs.
Ich bevorzuge eine zentrale CSS-Datei in der IDs und CLASSs definiert werden insofern es nötig ist. Befindet sich der Style im Script, muss er bei jedem evtl. Update angepasst, entfernt oder umgeschrieben werden. Aus einer externen CSS-Datei ist der Style schnell in die eigene CSS-Datei kopiert. Später ist, wenn überhaupt, nur der Link zur CSS-Datei im Script abgeändert.
Regex- und Datei-Suche geändert, genaue Erfassung der Treffer.
Die Regex-Suche wurde so verändert, dass auch aus mehreren Worten bestehende Suchmuster, mit und ohne Satzzeichen in der jeweiligen Datei, möglichst zuverlässig gefunden werden. Suchtreffer die nur auf der Dateisuche beruhen, werden nun als solche gezählt und erfasst.