Perl Script: Volltextsuche
Perl Script: Volltextsuche
 go to ...Vorwort
 go to ...Installation
 go to ...Allgemeines zur Ausführung
 go to ...Suchhilfe
 go to ...Download
 go to ...Support






go to index Vorwort

Noch ein Suchscript? Aber ja doch ...

Vorbilder seien hier nicht verschwiegen - das waren zum einen "Matt's Simple Search" und "Intermediate Search", Version 1.1. Von der 2ten Variante habe ich große Teile der deutschen Übersetzung der Suchtipps übernommen. Die waren einfach zu gut formuliert, da konnte ich nicht widerstehen ;-)

Dennoch vermochte keines der von mir gefundenen Suchscripts (es waren etliche mehr) meine Wünsche und Anforderungen zu erfüllen.

Da ich beruflich ebenfalls Perl Kenntnisse benötigte, ist dann im Laufe meines privaten Perl - Selbststudiums dieses Script entstanden und vielleicht kann es ja irgendjemand im WordWideWeb für seine eigene Homepage ebenfalls gebrauchen.

Voila hier ist's: eine schnelle kleine Volltext-Suchmaschine, mit optionalem Wort-Index-File (gut genug für Sites mit ein paar hundert Seiten), beinhaltet Unterstützung der deutschen Sonderzeichen äöüÄÖÜ und ß, entwickelt unter Windoofs-98/NT mit "Active Perl" - Perl Version 5.005, getestet unter Linux mit Apache - Perl Version 5.005.




go to index Installation

  1. Download search.zip (Zipfile 32KB)


  2. search.zip entpacken - die Unter-Verzeichnisse cgi-bin und sdata werden erwartet, bzw. erstellt.

    Das Zipfile beinhaltet folgende Dateien:

    VerzeichnisModuleAnmerkung
      GNUgpl.txtPopUp Window GNU GENERAL PUBLIC LICENSE
    Version 2, June 1991
      readme.txtPopUp Window kurze ZIP-File Gebrauchsanweisung
    cgi-bin search.cgi Perlscript für Index - Erstellung und Volltext - Suche
    sdata fullindex.txt enthält später das Volltext Index-File
    sdata godown.gif   <img src="images/godown.gif" width=14 height=10>
    sdata goupred.gif   <img src="images/goupred.gif" width=14 height=10>
    sdata liesmich.html diese Seite liest Du gerade  8)
    sdata mysearch.html Muster für ein Suchformular
    sdata names.txt Muster für ein optionales Namensverzeichnis, siehe Parmfile "nfile=" Definition
    sdata parmfile.txt Parmfile zur Steuerung der Suchscript Optionen, beinhaltet eine ausführliche Beschreibung der verschiedenen Steuerungs - Parameter
    sdata sadmin.html Muster für die Suchmaschinen Verwaltung (Passwort Definition und Erstellung der Volltext Indexdatei)
    sdata statslog.html Muster für ein optionales WebMaster Audit File, siehe Parmfile "sfile=" Definition
    sdata template.txt Suchmaschinen Ausgabe-Template, das auf das gewünschte Design angepasst werden kann, siehe Inline Beschreibung

    Die Namen der Unterverzeichnisse cgi-bin und sdata müssen eventuell auf die Gegebenheiten Deines Servers angepasst werden; das sdata Verzeichnis sollte für Besucher "versteckt", d.h. nicht sichtbar sein  oder  mit Passwortschutz versehen werden.


  3. search.cgi anpassen, folgende Werte müssen geändert werden:

    a. Zeile 1 #!/usr/bin/perl Pfad zu Perl
    b. Zeile 13 $baseurl = 'http://www.deine_url.de/'; Deine Homepage-URL
    c. Zeile 14 $basedir = '../'; Die relative Adresse des Basis-Verzeichnisses, ausgehend vom jeweiligen cgi-bin Verzeichnis, muss mit "/" End-Delimiter angegeben werden.
    (cgi-bin = das Verzeichnis, in dem das Script search.cgi steht)
    d. Zeile 15 $parmfile = 'sdata/parmfile_.txt'; relative Adresse des (oder der) ParmFiles - ausgehend von der $basedir Definition
      Das "_" (underscore-)Zeichen in der $parmfile Definition wird bei der Script - Ausführung gegebenenfalls durch einen OPT=xx Wert ersetzt. Dies ermöglicht für die Suchmaschine die Verwendung mehrerer Parmfiles mit unterschiedlichen Parametervorgaben.
    Genügt ein Parmfile, kann die spätere Verwendung des OPT Parameters entfallen (= Default).

    Beispiele: bei einer Suchangabe mit OPT=D wird das Parmfile "sdata/parmfileD.txt" verwendet, bei einer Suchangabe mit OPT=sonderbar wird das Parmfile "sdata/parmfilesonderbar.txt" verwendet, ohne OPT Angabe wird das Parmfile "sdata/parmfile.txt" verwendet.



  4. Anpassung des Parmfiles (oder bei geplanter Verwendung des OPT Parameters mehrerer (Punkt 3.d.) an die gewünschten Gegebenheiten "sdata/parmfile.txtPopUp Window" - siehe Inline-Beschreibung.


  5. Anpassung der Datei "sdata/template.txtPopUp Window" - siehe Inline-Beschreibung.


  6. File-Transfer der benötigten Dateien ins Online-Verzeichnis und CHMOD Zugriffsrechte setzen.
    (Bei Fragen zu CHMOD gibt es hier eine kleine Online-Hilfe: http://selfaktuell.teamone.de/artikel/cgiperl/inbetriebnahme/index.htm#a7externer Link.)

    VerzeichnisModuleCHMODAnmerkung
    cgi-bin search.cgi 755 FTP Übertragung im ASCII Modus
    sdata fullindex.txt 666  
    sdata names.txtPopUp Window   nur falls im Parmfile der "nfile=" Parameter definiert wird
    sdata parmfile.txt 666 oder parmfile_.txt, wobei "_" für den jeweiligen Suffix steht (Punkt 3.d.)
    sdata statslog.html 666 nur falls WebMaster Audit File gewünscht wird, siehe Parmfile "sfile=" Parameter
    sdata template.txt   



  7. Aufruf der Administrations-Seite zum erstmaligen Erstellen der Volltext Indexdatei "sdata/fullindex.txtPopUp Window",
    zuvor muss die URL "http://www.deine_url/cgi-bin/search.cgi" im Dokument "sadmin.html" geändert werden.

    Im Browser das Dokument "sadmin.htmlPopUp Window" aufrufen, bei Verwendung mehrerer Parmfiles gegebenenfalls einen OPTion - Wert eintragen, ein neues Password angeben und den "Update" Button anklicken.


  8. Einfach mal die Suche ausprobieren.

    Im Browser das Muster "mysearch.html" aufrufen (bei Verwendung mehrerer Parmfiles gegebenfalls OPTion - Wert eintragen), Suchstring(s) eingeben und "Volltext - Suche" anklicken.

    Zuvor muss die URL "http://www.deine_url/cgi-bin/search.cgi" im Dokument "mysearch.htmlPopUp Window" geändert werden.


  9. Last not least: Nach Änderungen/Ergänzungen in Deinen Seiten
    a. Eventuell die "parmfile.txtPopUp Window" Datei anpassen und in das sdata Verzeichnis transferieren - normalerweise ist dies nicht notwendig,
    b. die Volltext Indexdatei neu erstellen

    Im Browser das Dokument "sadmin.html" aufrufen, bei Verwendung mehrerer Parmfiles gegebenenfalls OPTion - Wert eintragen, das bei Punkt 7 verwendete Password angeben und den "Update" Button anklicken.



go to index Allgemeines zur Ausführung

Folgende Parameter können sowohl direkt, als auch über <FORM>..</FORM> übergeben werden:

  SEARCH=term1 term2 ... termn
{ OPT=xx }
{ MODE=UPDATE }
{ PASSWORD=password }
{ PASSNEW=newpassword }

MODE, PASSWORD und PASSNEW werden nur bei Erstellung des Volltext Indexfiles benötigt, OPT nur bei Verwendung verschiedener Parmfiles, sonstige Steuerungsangaben stehen in der Datei sdata/parmfile.txtPopUp Window.

Bei einem Script Aufruf ohne Parameter werden die Suchtipps angezeigt.


Beispiel für einen direkten Aufruf: http://www.deine-url.de/cgi.bin/search.cgi?search=humor

Beispiele für den Aufruf mit Formular-Eingaben sind in den Dateien




go to index Suchhilfe

Verknüpfungen

Jeder Suchbegriff kann mit einer üblichen Boole'schen Verknüpfung (not, and, oder or) begonnen werden. Wenn Du nach Krötenpisse not Kohl suchst, wirst Du alle Dokumente finden, die das Wort Krötenpisse enthalten, außer denen, die auch das Wort Kohl enthalten. Wenn Du dagegen als Suchbegriff krötenpisse and kohl and affenblut eingibst, werden Dir nur die Dateien angezeigt, die alle drei Begriffe enthalten.

Standard ist die Verknüpfung or, wenn Du also krötenpisse kohl affenblut suchst, wirst Du alle Seiten finden, die mindestens einen der drei Begriffe enthalten.

Anstelle von not und and kannst Du auch - und + verwenden; das bedeutet karl +valentin -u2 entspricht karl and valentin not u2.


Großschreibung

Bei Suchbegriffen, die mindestens einen Großbuchstaben enthalten wird nach Groß- und Kleinschreibung unterschieden, wenn alles in Kleinbuchstaben geschrieben wurde nicht. Das bedeutet, das parIS tatsächlich nur Seiten anzeigt, die das Wort in exakt der Groß - und Kleinschreibung enthalten, während bei paris sowohl Seiten mit Paris, PARIS, als auch parIS gefunden werden.


Gruppieren

Wenn Du nach einer Gruppe von Wörtern suchen lassen willst, gib sie in Anführungszeichen an. So wird bei dem Suchbegriff "Valentin Unsinn" eine Seite mit dem Titel "Unsinn von Karl Valentin" nicht angezeigt, bei einem Suchbegriff ohne Anführungszeichen hätte sie gezählt.


Wildcards

Das Suchprogramm sucht normalerweise nach ganzen Wörten nicht nach Teilen davon, eine Suche nach rot erzeugt nur Treffer mit genau diesem Wort, nicht trotz, rotes, oder trotzdem. Wenn Du stattdessen nach einem Teil eines Wortes suchen willst, dann kannst Du Suchbegriffe mit Wildcard-Zeichen maskieren.

Folgende Wildcard Angaben sind möglich:

  • ein Stern * entspricht null oder mehreren beliebigen Zeichen (auch über Wortgrenzen hinweg),
  • ein Fragezeichen ? entspricht genau einem beliebigen Zeichen.

Der Suchbegriff rot* findet Wörter wie rot, rotes oder Rotte; der Suchbegriff ?rot* findet Wörter wie Brotteig, trotz usw.


Annäherung

Bei Suchbegriffen, die einen Umlaut ä Ä ö Ö ü Ü oder ein ß beinhalten, kann die Tilde ~ vorangestellt werden. Eine Suche nach ~hässlich entspricht einer Suche nach hässlich, haesslich und häßlich.

Diese Annäherungssuche ist bei allen zuvor beschriebenen Suchangaben möglich. Beim Suchbegriff ~*eiß wird demzufolge nach den Zeichenfolgen eiß und eiss gesucht.




go to index Download

Das Suchscript mit Dokumentation kann hier runtergeladen werden (Zipfile 32KB).




go to index Support

Support ... gibt es eigentlich nicht ...
  aber ...
Anregungen?, Fragen??, Probleme ???, Danksagungen????

mailto: eisbaer@purpurhain.de?subject=PurpurHain Suchscript search.cgi
mit einem hoffentlich einigermaßen aussagefähigen Text ;-))

Für ganz allgemeine Fragen zu CGI gibt es unter folgendem Link eine kleine Online-Hilfe http://selfaktuell.teamone.de/artikel/cgiperl/inbetriebnahme/index.htmexterner Link

Und irgendwann steht hier auf jeden Fall eine bessere / vollständigere Beschreibung ... ist versprochen.







      Copyright © Günter Laudenklos 2000-2007
Der seit 28. April 1997