Über den Schwanzabschneider denke ich ein anderes mal nach.
Der läßt sich allerdings nicht von der Suchfunktion trennen.
Mich würde interessieren, wie die Suchfunktion funktioniert
Die Suchfunktion ist eine Phrasensuche. Sie findet also
beliebige Textstellen auch über Wort- oder Satzgrenzen
hinweg, macht dafür aber keinen Gebrauch von binären
Suchbäumen etc. Deshalb ist die Suchdauer direkt propor-
tional zur Menge der zu durchsuchenden Daten.
(Rate mal, wieso "NI" eingeführt wurde ... ;-)
Durchsucht werden nicht die HTML-Dateien mit den Postings,
sondern eine auf die Bedürfnisse der Suche optimierte
sequentielle ASCII-"Indexdatei".
Der Schwanzabschneider hat nicht nur die Aufgabe, Beiträge
aus dem Forum-"Cache" in das Archiv zu übertragen, sondern
er erzeugt dabei auch gleich die passenden Indexeinträge.
(Sofern der Beitrag nicht mit "NI" markiert ist.)
Jeder Indexeintrag (eine Zeile) enthält:
- relativer URL der Archivdatei (die einen gesamten
Thread enthält) - target des Postings innerhalb der Archivdatei
(um exakte Treffer-Links bauen zu können) - Thema des Beitrags (darf auch leer sein)
- Überschrift des Beitrags
- Name des Verfassers
- Datum des Beitrags
- kompletter Inhalt des Beitrags (nach Entfernen von
senkrechten Strichen, welche als Trennzeichen zwischen
den Feldern einer Zeile dienen)
Der Kompromiß mit dem senkrechten Strich basiert auf
der vorliegenden Datenstruktur; würde jedes Feld in
einer eigenen Zeile stehen, wäre er nicht nötig.
Das Such-Skript wertet seine CGI-Parameter aus,
baut sich seine Suchtermliste zusammen, liest die
komplette Indexdatei (> 40 MB) sequentiell durch und
"sucht", d. h. vergleicht die zu durchsuchenden Felder
mit den Werten der Suchterme, inklusive Regulärer
Ausdrücke, Case-Sensitivität und was auch noch alles.
(Das zu beschreiben ist eine längere Geschichte.)
Die Treffer werden in einem array gespeichert; am Ende
kann für die Ausgabe Trefferzahl und Ausgaberichtung
variabel gehandhabt werden.
Es existiert ein *sehr* viel ausführlicherer Artikel
über die Funktionsweise des Such-Skripts. Bisher ist
er noch nicht allgemein zugänglich, aber falls Stefan
nichts dagegen hat ...
Technisches Detail: Das Suchskript selbst gibt sein
Eingabeformular aus. Die Suchmaschine besteht aus genau
einem einzigen Perl-Skript, keine zusätzlichen HTML-
Dokumente oder was auch immer.
und das der Threadast unter einem Posting angezeigt wird.
Alle Dateien des Forums, die Du liest, sind statisch.
Das bedeutet, daß der "Poster" alles, was Du als features
eingebaut haben willst, während des Einfügen eines neuen
Beitrags tun muß. Er muß also alle Dateien des gesamten
Threads ändern, nicht nur den neuen Beitrag erzeugen und
die Hauptdatei anpassen. Die Vorgehensweise ist dabei
immer dieselbe, und die Verweis-Struktur enthält immer
dieselben Meta-Informationen als HTML-Kommentare.
Welche Dateien er ändern muß, das erkennst Du durch die
Thread-Struktur in der Hauptdatei, wo ja der gesamte
Thread zusammenhängend beschrieben ist.