Marvin C. Stahl: Suchmaschinen-Script für Website

Hallo Allemiteinander!

Ich suche seit einiger Zeit ein CGI-Script mit dem ich
Dateien auf meiner Site durchsuchen lassen kann. Wer jetzt
denkt 'Dieser DAU'... ich will REINE Textdateien, keine
HTML-Dateien durchsuchen! Suchmaschinen für HTML-Seiten gibt
es wie Salz im Streuer. Die 'Rahmenbedingungen':

Ich habe CGI- und MySQL-Rechte bei meinem Provider.
Durchsucht werden sollen ALLE Textdateien in den
Subdirectories von /txt und gefundene Dateien mit
Link und ca. 100-250 Zeichen vom gefunden File ausgegeben
werden. So 20-30 Stück pro Seite.

Sortieren nach Relevanz wäre super, aber nicht zwingend
nötig. Gibt es soetwas als Freeware für Unix. Ach ja,
es sollte ohne Datenbank oder Index arbeiten, die Suche
also 'on the fly' vornehmen.

Wäre nett, wenn ihr mir helfen könntet.

Marvin

  1. Moin!

    Ich habe CGI- und MySQL-Rechte bei meinem Provider.
    Durchsucht werden sollen ALLE Textdateien in den
    Subdirectories von /txt und gefundene Dateien mit
    Link und ca. 100-250 Zeichen vom gefunden File ausgegeben
    werden. So 20-30 Stück pro Seite.

    Sortieren nach Relevanz wäre super, aber nicht zwingend
    nötig. Gibt es soetwas als Freeware für Unix. Ach ja,
    es sollte ohne Datenbank oder Index arbeiten, die Suche
    also 'on the fly' vornehmen.

    Wenn du dir sowas schreibst, dann gibt es sowas ab sofort als Freeware.

    Programmierhinweis:
    1. Lass dir von irgendwoher den Suchbegriff übergeben.
    2. Öffne das Verzeichnis mit den zu durchsuchenden Dateien.
    3. Lies die erste Datei ein. Durchsuche sie nach dem Vorkommen des Begriffs, indem du jede Zeile auf das Vorkommen des Begriffs prüfst.
    4. Wenn du den Begriff gefunden hast, speichere irgendwo deinen Treffer - ggf. schon gleich mit den umliegenden Worten.
    5. Wenn noch Dateien im Verzeichnis sind, mache bei 3 weiter.
    6. Gib dein Suchergebnis aus.

    :)

    - Sven Rautenberg

    1. Hallo Sven,

      Wenn du dir sowas schreibst, dann gibt es sowas ab sofort als Freeware.
      Programmierhinweis:

      1. Lass dir von irgendwoher den Suchbegriff übergeben.
      2. Öffne das Verzeichnis mit den zu durchsuchenden Dateien.
      3. Lies die erste Datei ein. Durchsuche sie nach dem Vorkommen des Begriffs, indem du jede Zeile auf das Vorkommen des Begriffs prüfst.
      4. Wenn du den Begriff gefunden hast, speichere irgendwo deinen Treffer - ggf. schon gleich mit den umliegenden Worten.
      5. Wenn noch Dateien im Verzeichnis sind, mache bei 3 weiter.
      6. Gib dein Suchergebnis aus.

      <GRINS> Ist schon klar, wie das geht. In Visual Basic könnte ich so ein Teil in einer Nacht coden, aber ich werde nicht extra Perl lernen, um es meinen Benutzern bequemer zu machen. Es kann doch nicht sein, dass es unzählige Freeware Suchmaschinen-Scripte gibt, die HTML-Dateien durchsuchen, aber NULL die reine Textdateien durchforsten!? :-(((

      Trotzdem vielen Dank für deine Antwort
      MfG
      Marvin

  2. Hi Marvin,

    Ach ja, es sollte ohne Datenbank oder Index arbeiten, die Suche
    also 'on the fly' vornehmen.

    warum? (Insbesondere, da Du ja auch noch explizit Deine mySQL-Berechtigung erwähnt hast). Du würdest bei Verwendung entsprechender Indexstrukturen um _Größenordnungen_ bessere Ergebnisse erzielen können.

    Der Code eines Indexers unterscheidet sich vom Code eines on-the-fly-HTML-Parsers nicht so sehr. Verstehen mußt Du die Dokumente in beiden Fällen - allerdings in Deinem Modell immer wieder, in meinem nur relativ selten (nämlich jeweils beim Aktualisieren des Indexes).

    Viele Grüße
          Michael

    1. Hallo Michael,

      Ach ja, es sollte ohne Datenbank oder Index arbeiten, die Suche
      also 'on the fly' vornehmen.

      warum? (Insbesondere, da Du ja auch noch explizit Deine mySQL-Berechtigung erwähnt hast). Du würdest bei Verwendung entsprechender Indexstrukturen um _Größenordnungen_ bessere Ergebnisse erzielen können.

      Das ist schon klar, ABER... ich kenne mich überhaupt nicht mit
      Perl oder mySQL aus und will eigentlich auch gar nicht tief in diese Materie eindringen. Da ich gerade eine Site aufbaue in der letztendlich VIELE (> 6000) Texte vorhanden sein werden (25 Rubriken), will ich es den zukünftigen Benutzern nur etwas bequemer gestalten. Ich weiß selbst, wie nervend es ist bestimmte Texte in großen Sammlungen zu finden. :-)

      Der Code eines Indexers unterscheidet sich vom Code eines on-the-fly-HTML-Parsers nicht so sehr. Verstehen mußt Du die Dokumente in beiden Fällen - allerdings in Deinem Modell immer wieder, in meinem nur relativ selten (nämlich jeweils beim Aktualisieren des Indexes).

      Wie gesagt, Du rennst offene Türen ein. Wenn es soetwas mit brauchbarer Anleitung geben würde, hätte ich es bereits installiert. Im Moment bastle ich mit FMSEARCH herum. Aber als Suchergebnisse bekomme ich (natürlich!) immer UNTITLED mit der Relevanz in Prozent und dem Link, weil es eben TEXTE und keine HTML-Dateien mit <title>-Tag sind! :-( Wenn sich nicht nix findet, das reine Textdateien durchsucht, werde ich versuchen, ob es klappt, wenn ich den Titel jeder Textdatei als <titel>blablabla</title> in jede Datei einfüge. :-(((

      Trotzdem vielen Dank für deine Antwort
      Marvin

      1. Hallo Marvin,

        Ich weiß selbst, wie nervend es ist bestimmte Texte in großen Sammlungen zu finden. :-)

        Dann weißt Du sicher auch, wie nervig es ist, minutenlang auf die Suchergebnisse zu warten, und genau das wird passieren, wenn Du 6000 Dateien auf einem normalen Webserver on-the-fly durchsuchst.

        Wenn sich nicht nix findet, das reine Textdateien durchsucht, werde ich versuchen, ob es klappt, wenn ich den Titel jeder Textdatei als <titel>blablabla</title> in jede Datei einfüge. :-(((

        Warum so kompliziert? So gut wie alle Suchmaschinen-CGIs arbeiten mit Templates, Du löscht im Template für die Suchergebnisse einfach den Teil, der den Titel anzeigt, und gibst stattdessen die URL, ein Bild, oder was auch immer aus...
        Ich finde mnogosearch http://www.mnogosearch.org/ recht leicht zu installieren, das sollte auch ohne große Erfahrung mit Unix hinzukriegen sein, wenn Du Telnet oder SSH-Zugriff auf den Server hast.

        Viele Grüße
        Stephan