Heinz: schnelle Suchfunktion des Forums

Hi,

Wie ich gehört habe, arbeitet das forum nur mit textdateien... Wieso funktioniert dann die suche (auch im archiv) so schnell? Das archiv ist doch teilweise über 90mb groß...

MfG Heinz

  1. Hi,

    Hi,

    Wie ich gehört habe, arbeitet das forum nur mit textdateien... Wieso funktioniert dann die suche (auch im archiv) so schnell? Das archiv ist doch teilweise über 90mb groß...

    Neues Feature in 2003 ;-)

    Viele Grüße,
    Martin Jung

  2. Hallo Heinz,

    Wie ich gehört habe, arbeitet das forum nur mit
    textdateien...

    Jain.

    Wieso funktioniert dann die suche
    (auch im archiv) so schnell? Das archiv ist
    doch teilweise über 90mb groß...

    Archivsuche != Forum, so mal als Info. Hat
    komplett andere Datenbestaende.
    Zur Frage: Michael hat die Suche *sehr* gut
    getuned, dazu kommt, dass das verwendete
    Datei-System ziemlich schnell ist (von den HDs
    mal abgesehen). Und eine Datenbank macht haeufig
    auch nichts anderes, als alle Datensaetze
    durchzulaufen. Wenn das nicht geschehen soll,
    muessen Indizes verwendet werden (koennen).

    Gruesse,
     CK

  3. Hi Heinz,

    Wie ich gehört habe, arbeitet das forum nur mit textdateien... Wieso funktioniert dann die suche (auch im archiv) so schnell? Das archiv ist doch teilweise über 90mb groß...

    die im Suchformular zu jedem "Suchgebiet" angegebenen Größenangaben sind in der Tat die Dateigrößen der zu durchsuchenden "Indexdateien (CSV-ähnliche, von HTML-Tags befreite, spaltenorientierte Dateien).
    Ja, die Suche macht quasi einen "full table scan" (wobei sie im Wesentlichen jede Indexzeile per "split" zerlegt und dann via regular expressions die einzelnen Suchterme zu matchen versucht). Auf diese Weise kann sie beliebige Phrasen finden, nicht nur Worte. Dafür ist sie leider nicht annähernd so schnell, wie ich sie gerne hätte, und vor allem nimmt ihre Suchdauer mit dem Datenvolumen linear zu (das ist der Hauprgrund dafür, weshalb das Archiv in mehrere Indexdateien zerlegt ist und im Formular per Default vor allem die kleinen, qualitativ hochwertigen Dokument-Typen präselektiert sind: Der Anwender kann per Formular-Einstellung die Suchdauer stark beeinflussen). Auf dem vorherigen Server war sie in der Tat ziemlich langsam, aber was Christian später als Server ausgesucht, eingekauft, installiert, konfiguriert und getuned hat, wird mit diesen Anforderungen sehr viel besser fertig.

    Über das Skripts gibt es eine ziemlich detaillierte Dokumentation (ca. 50 Kb HTML-Dokument, habe ich vage in Erinnerung). Ich habe damals fast jedes wichtige Perl-Statement gebenchmarked und festgestellt, daß beispielsweise das Splitten der Zeilen etwa so teuer ist wie deren Lesen von der Festplatte ...
    Diese Dokumentation hat allerdings "mangels allgemeinem Interesse" (= zu speziell und technisch) nie den Weg zur Veröffentlichung als Feature-Artikel geschafft (leider - denn ich würde bei Fragen wie der Deinen ab und zu gerne mal auf sie verlinken).

    Ach ja: Mit dem Jahreswechsel 2002 -> 2003 wird wohl eine neue Indexdatei fällig sein ... und die 2002er-Datei sollte mal in Halbjahre oder gar Quartale zerlegt werden, finde ich.

    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.
    1. Hi Michael,

      Über das Skripts gibt es eine ziemlich detaillierte Dokumentation (ca. 50 Kb HTML-Dokument, habe ich vage in Erinnerung). [...]
      Diese Dokumentation hat allerdings "mangels allgemeinem Interesse" (= zu speziell und technisch) nie den Weg zur Veröffentlichung als Feature-Artikel geschafft (leider - denn ich würde bei Fragen wie der Deinen ab und zu gerne mal auf sie verlinken).

      Nun ja, das ist in der Tat sehr schade.
      Aber was schliesst denn eine Veröffentlichung (auch abseits der Feature-Artikel) aus?
      Befürchtet ihr/du vielleicht dadurch zu viele Rückfragen von Usern, die diese Suchmaschine nachbauen wollen?

      Ich jedenfalls würde dieses Dokument sehr gerne mal lesen! Nur Interessehalber! ;o)

      Viele Grüße und einen guten Start ins neue Jahr...

      Alex :)

      1. Hi Alexander,

        Über das Skripts gibt es eine ziemlich detaillierte Dokumentation (ca. 50 Kb HTML-Dokument, habe ich vage in Erinnerung). [...]
        Diese Dokumentation hat allerdings "mangels allgemeinem Interesse" (= zu speziell und technisch) nie den Weg zur Veröffentlichung als Feature-Artikel geschafft ...
        Aber was schliesst denn eine Veröffentlichung (auch abseits der Feature-Artikel) aus?

        ich betrachte die Suchmaschine als "property of the Self portal" (ich habe sie ja nicht erfunden, sondern nur erweitert) und würde eine Veröffentlichung nur im Einverständnis mit dessen Betreiber durchführen wollen. Und die wäre dann sinnvollerweise auf dem Portal selbst - wo auch sonst?

        Da inzwischen ja auch der Artikel
           http://aktuell.de.selfhtml.org/artikel/server/self/
        veröffentlicht worden ist, der ähnlich spezifisch auf die Belange des Portal-Servers eingeht, könnte man mal den Betreiber befragen, ob sich da die Kriterien im Laufe der Jahre geändert haben ...

        Befürchtet ihr/du vielleicht dadurch zu viele Rückfragen von Usern, die diese Suchmaschine nachbauen wollen?

        Die kriege ich sowieso (per Mail), weil mein Name im Impressum drin steht.
        Meine Standardantwort auf solche Anfragen lautet: Die Self-Suche ist viel zu spezifisch auf die Dokumentformate des Portals ausgelegt - nimm lieber FDSE ...

        Ich jedenfalls würde dieses Dokument sehr gerne mal lesen! Nur Interessehalber! ;o)

        Dann frag doch mal bei Stefan nach. Von meiner Seite aus bestehen keine Hindernisse.

        Für technische Detailfragen wäre dann allerdings auch eine Veröffentlichung des (heftig kommentierten) Quelltextes sinnvoll ... vielleicht sollte man ein SourceForge-Projekt daraus machen?
        Das Problem dabei ist jedoch, daß es keine klare Abtrennung der Zuständigkeiten gibt: Die Suchmaschine funktioniert nicht ohne die vielen verschiedenen (und jeweils separat dokumentierten) Indexer, von denen einer beispielsweise wiederum Bestandteil der Forums-Software ist (bzw. sein sollte). Das ist ja auch die Ursache für das momentane Problem, daß archivierte Postings erst mal einen Tag lang nicht suchbar sind ... da sind die verschiedenen Produkte noch nicht sauber zusammengewachsen. Die Suche wuchert wie eine Krake durch das gesamte Self-Portal ...

        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.
        1. Hallo Michael,

          ich betrachte die Suchmaschine als "property of the Self portal" (ich habe sie ja nicht erfunden, sondern nur erweitert) und würde eine Veröffentlichung nur im Einverständnis mit dessen Betreiber durchführen wollen.

          Nun gut, das wusste ich nicht. Ich dachte, dass Du sie alleine entwickelt und programmiert hast.

          Dann frag doch mal bei Stefan nach. Von meiner Seite aus bestehen keine Hindernisse.

          Das werde ich gerne tun. :)
          Also Stefan, falls Du mitliest, kannst Du dich schon mal auf eine Mail gefasst machen ;o)
          Allerdings erst morgen. Jetzt bin ich zu müde...

          Das Problem dabei ist jedoch, daß es keine klare Abtrennung der Zuständigkeiten gibt: Die Suchmaschine funktioniert nicht ohne die vielen verschiedenen (und jeweils separat dokumentierten) Indexer, von denen einer beispielsweise wiederum Bestandteil der Forums-Software ist (bzw. sein sollte).

          Dass die Suchmaschine speziell auf die Belange des Self-Forums zugeschnitten ist, ist ja verständlich.

          Es wäre für den Anfang allerdings auch sehr interessant, erstmal etwas Allgemeines über den Aufbau er Indexdateien und dem eigentlichen Suchalgorithmus etc. zu lesen ("Warum wurde z.B. auf den Einsatz einer Datenbank verzichtet"). Wie nun speziell die Probleme des Self-Raums gelöst wurden (z.B. Verknüpfung zwischen Forum und Indexer), erachte ich als zweitrangig (das soll nicht heissen, dass die nicht interessant wäre...).

          Ich hoffe es ist verständlich, was ich aussagen möchte. Ich möchte nicht wissen, wie es hier gelöst wurde, sondern ich möchte _verstehen_ weshalb es hier so (und nicht anders) gelöst wurde. Getreu dem Self-Motto "Die Energie des Verstehens", so dass ich mit Hilfe dieser Dokumentation Denkanstösse bekomme, um selbst Lösungen entwickeln zu können.

          Viele Grüße...

          Alex :)

          1. Hi Alexander,

            Es wäre für den Anfang allerdings auch sehr interessant, erstmal etwas Allgemeines über den Aufbau er Indexdateien und dem eigentlichen Suchalgorithmus etc. zu lesen ("Warum wurde z.B. auf den Einsatz einer Datenbank verzichtet").

            weil das Such-Skript ursprünglich eine Fingerübung von Stefan war - wahrscheinlich einer der ersten Gehversuche in Perl.
            Und weil das Self-Portal damals von einem Provider gehostet wurde, der sehr viel weniger erlaubte als heute der eigene Server.

            Daß Daniela Koller eine Neu-Implementierung in SQL macht, weißt Du? (=> Archiv)

            Ich hoffe es ist verständlich, was ich aussagen möchte. Ich möchte nicht wissen, wie es hier gelöst wurde, sondern ich möchte _verstehen_ weshalb es hier so (und nicht anders) gelöst wurde.

            Vieles davon ist "historisch gewachsen", teilweise schon bei der Vor-Vorgängerversion des Forums (Matt Wright). Deshalb ist das Skript als Vorbild für eine schöne Lösung nicht sonderlich tauglich ... die Version, die Daniela jetzt schreibt, dürfte da schon wesentlich besser werden.

            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.
            1. Hi,

              Daß Daniela Koller eine Neu-Implementierung in SQL macht, weißt Du? (=> Archiv)

              Nein, das wusste ich nicht. Ich hab mal im Archiv nach "Suchmaschine sql" gesucht und dabei diesen Monster-Thread entdeckt:
              http://forum.de.selfhtml.org/archiv/2002/11/30406/

              Er scheint dies zu behandeln. Allerdings muss ich zugeben, dass ich ihn noch nicht gelesen habe.

              Vieles davon ist "historisch gewachsen", teilweise schon bei der Vor-Vorgängerversion des Forums (Matt Wright). Deshalb ist das Skript als Vorbild für eine schöne Lösung nicht sonderlich tauglich ... die Version, die Daniela jetzt schreibt, dürfte da schon wesentlich besser werden.

              Nun gut. Vielleicht sollten wir wirklich warten, bis die neue Suchmaschine im Einsatz ist.
              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.
              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.

              Ich danke Dir für Deine ausführlichen und hilfbereiten Beiträge.

              Viele Grüße...

              Alex :)

              1. 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.