Mabinog: Ich möchte eine Suchfunktion selber konstruieren

Hallo Forum

Ich möchte gerne eine Suchfunktion in meine Homepage einbauen.
Folgende Suchbefehle sollte sie beherrschen:

XYZ : Sucht nach Wörtern namens 'XYZ'.
-XYZ : Schliesst Wörter namens 'XYZ' aus.
*XYZ : Sucht nach Wörtern, welche mit 'XYZ' enden.
XYZ* : Sucht nach Wörtern, welche mit 'XYZ' beginnen.
*XYZ* : Sucht nach Wörtern, welche 'XYZ' enthalten.

Die Suchbegriffe werden durch einen Leerschlag voneinander getrennt.
Man kann angeben, welche expliziten Seiten der Homepage durchsucht werden.
Stern (*) sowie Strich (-) sollten miteinander kombinierbar sein.

Da ich viel Wert auf die Gestaltung lege stellt sich mir die Frage, wie die Ergebnisse angezeigt werden, respektive inwiefern man diese gestalten kann.

Die Forumssuche habe ich benutzt, jedoch keine treffende Resultate finden können.

Gespannt warte ich auf eure Meinungen, Kritik, Kommentare etc.

Freundliche Grüsse,
Mabinog

  1. "Man kann angeben, welche expliziten Seiten der Homepage durchsucht werden."

    Ein wenig unklar ausgedrückt.
    Ich wollte damit sagen, dass der Webmaster bei sich irgendwo einstellen kann, dass beispielsweise nur die Seiten '4.html' und '3.php' bei der Suche durchsucht werden.

    Freundliche Grüsse,
    Mabinog

  2. hi,

    XYZ : Sucht nach Wörtern namens 'XYZ'.
    -XYZ : Schliesst Wörter namens 'XYZ' aus.
    *XYZ : Sucht nach Wörtern, welche mit 'XYZ' enden.
    XYZ* : Sucht nach Wörtern, welche mit 'XYZ' beginnen.
    *XYZ* : Sucht nach Wörtern, welche 'XYZ' enthalten.

    Falls Du vorhast, das mit Perl zu machen, nimm da einfach das Modul Text::Query.

    --Hotte

    1. Hoi Hotte

      Ich habe noch keine Ahnung, wie ich das ganze umsetzen will/kann. Meine Kenntnisse reichen bloss über HTML, CSS, ein wenig PHP und noch weniger Java.
      Ist es utopisch, mit diesen Voraussetzungen eine Webseiten-interne Suchmaschine zu bauen?

      Haben andere Links, Tipps, Code-Schnipsel oder sonstige Erklärungen für mich, so wäre ich sehr froh um diese.

      Freundliche Grüsse,
      Mabinog

      1. hi,

        Ich habe noch keine Ahnung, wie ich das ganze umsetzen will/kann. Meine Kenntnisse reichen bloss über HTML, CSS, ein wenig PHP und noch weniger Java.
        Ist es utopisch, mit diesen Voraussetzungen eine Webseiten-interne Suchmaschine zu bauen?

        Nun, mit PHP kennst Du ja schon eine Programmiersprache, die serverseitig eingesetzt wird. Das ist schonmal ne gute Voraussetzung und PHP wird von vielen Providern auch unterstützt genauso wie MySQL.

        Zur Suche gibt es verschiedene Ansätze, z.B. Stichwortsuche und Volltextsuche. Für Erstere müssen die Einzeldokumente entsprechend aufgearbeitet werden, also Worte aus den Texten parsen usw. Daraus wird dann ein Index erstellt und auf diesem "sitzt" das Suchfrontend (PHP) für den Besucher.

        Die Volltextsuche hingegen erfordert nur eine geringe Aufarbeitung, z.B. um HTML-Tags zu entfernen, den Text an sich jedoch nicht verändert sondern im Ganzen durchsuchbar macht. Hierzu gäbe es die Möglichkeit, eine Suche direkt ins Dateisystem zu schicken oder auf eine DB zu setzen, wo die Inhalte der Einzelseiten in einer Tabelle liegen. Hierzu wäre zu überlegen, ob der Content neben physisch vorhandenen Dateien also doppelt auf dem Server liegt, oder ob der Content generell aus der DB geladen wird.

        Und last but not least gibt es außer MySQL auch noch andere Datenbanken, die ggf. noch ein bischen performanter sind. Auf meiner Site liegen alle HTML-Contents in DB_File, das ist eine einzige Datei. Organisation dieser Datenhaltung:

        URL     =>     Content
        ^Schlüssel     ^Dateiinhalt in HTML

        Bei einer Suche wird die komplette Tabelle gescannt und das Perl-Modul Text::Query ermittelt je nach SuchTerm die zugehörigen URLs wenn es Treffer gibt. Mit diesem Modul können komplexe Suchterms im Stil einer jeden InternetSuchmaschine eingegeben werden (z.B. +willhaben -dasnichthaben).

        Ein weiteres Thema wäre dann die Relevanz einer Suche. Text::Query kann z.B. ermitteln, wie oft ein Suchbegriff in einem Text vorkommt und danach lässt sich dann das Ergebnis sortieren.

        Also, mach Dich mal auf den Weg und guck mal, was die PHP-Gemeinde da so hat.

        Hotti

      2. Hoi Hotti

        Vielen Dank für die weitere Hilfe!
        Um etwas klarer zu machen, was die Suche den bringen soll:
        Die Homepage ist quasi ein Nachschlagewerk über Münzen. Die einzelnden Münzeinträge werden in ihrer Zahl im fünf-, vielleicht sogar sechsstelligen Bereich (!) liegen, deshalb die notwendige, genaue Suche.

        Wie beginne ich denn nun am besten? Ich habe einen Server (POP3/IMAP4 und MySQL), in dem ich testen könnte. Irgend ein Link, oder sogar ein Buch, welches empfehlenswert für einen Neuling in der Materie wäre?

        Ich möchte das ganze selber coden/programmieren und nicht auf Drittanbieter zurückgreifen, da meine Homepage vielleicht einmal ins Komerzielle geht.

        Freundliche Grüsse,
        Mabinog