Michael Schröpl: schnelle Suchfunktion des Forums

Beitrag lesen

Hi Alexander,

Allerdings bietet die jetzige Suchmaschine Funktionen und eine gute Performace, sodass man sicherlich noch einiges lernen kann, wenn man sich die hier verwendeten Scripte mal genauer anschauen würde.

was die Suche angeht, steckt da keinerlei Magie drin. Das Teil liest wirklich nur die CSV-artigen Indexdateien (in denen die einzelnen Felder wie Autor, Topic, Datum, Inhalt und Link-URL voneinander getrennt sind), trennt die Zeilen mit "split" auf und wendet dann die Suchbegriffe auf die entsprechenden Felder an - wobei zuerst die AND-Terme und dann die NOT-Terme geprüft werden und bei jedem Versagen der Test für dieses Zeile abgebrochen werden kann (Performance). Die Optionen des Formulars wie Case-Sensitivität oder Wortgrenzen werden mit einfachen Perl regular expressions realisiert.

Programmiertechnisch interessant ist am ehesten noch der Parser für die Suchbegriffe, der auch mit Phrasen und mit auf verschiedene Datenabschnitte anzuwendenden Suchtermen fertig wird - den hat im Wesentlichen Frank Schönmann beigesteuert, und der ist sehr perlish und sehr kompakt.

Vom Projektansatz her wäre noch relevant, daß der gesamte generierte HTML-Code aus einer Schablonendatei eingelesen und dynamisch zusammengebaut wird.

Jetzt denke Dir das Obige in Perl umgesetzt (ca. 400 Zeilen Perl und ca. 600 Zeilen Kommentare), und Du hast das Such-Skript. Die Indexer sind auch relativ einfach, aber jeweils an das Format der zu indexenden Dokumente angepaßt; die Besonderheit der Self-Suche ist, daß als Ziel eines Links nicht ein Dokument, sondern ein Target innerhalb eines Dokuments verwendet wird, also ein Posting innerhalb eines archivierten Threads oder ein Unterkapitel einer SelfHTML-Datei - pro Zieldatei gibt es also nicht eine, sondern variabel viele Indexdateizeilen.

Das ist grob gesagt die aktuelle Archivsuche.

Zudem bleiben Deine oben gemachten Einschränkungen für all diejenigen, die keinen eigenen Server betreiben bzw. deren Provider nicht die technische Grundlage bietet, aktuell, wodurch die bisherige Suchmaschine sicherlich ein sehr guten Ansatz darstellt.

Wer auch immer eine solche Suchmaschine einsetzen oder von ihr lernen möchte, ist bei FDSE besser aufgehoben. Sie arbeitet im Prinzip mit demselben linearen Ansatz (der sie auf eine überschaubare Anzahl von Dokumenten limitiert), aber erstens ist die wesentlich universeller einsetzbar, zweitens ist sie via HTTP-Interface sehr flexibel konfigurierbar (auch was den generierten HTML-Code angeht), drittens ist sie irre ausführlich dokumentiert (mehr als 100 help files!), viertens wird sie aktuell weiterentwickelt, fünftens ist sie in hunderten von Instanzen auf diversen Plattformen im Einsatz ...
Es hat schon seine Gründe, weshalb ich für meine eigene Domain FDSE verwende und nichts Eigenes, und weshalb ich damals die FDSE-Benutzeroberfläche nach Deutsch übersetzt habe.

Viele Grüße
      Michael

--
T'Pol: I apologize if I acted inappropriately.
V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.