Hallo liebe Forumleser!
Ich habe mir vor ca. 1/2 Jahr mit Perl eine Suchmaschine für meine Web-Site zusammengebastelt und bin gerade dabei, sie Schritt für Schritt zu verbessern (so wie das vor ein paar Jahren hier im Forum vorgeschlagen wurde. Danke dafür :-). Eigentlich macht sie schon so ziemlich alles, was ich mir vorstelle, allerdings blieb mir ein Wunsch - der auch in besagtem Forumsbeitrag erwähnt wurde - bis jetzt unerfüllt: bei den Suchergebnissen sollten neben Titel und Adresse der Seite auch einige Zeilen Text aus dem gefundenen Dokument erscheinen, damit der User sich in etwa den Kontext des Hits vorstellen kann.
Weil die Grösse meiner Website mittlerweile auf über 50 MB angewachsen ist, verwende ich die invertierte Suchmethode, d.h. von einem Indexer-Script werden Stichworte vorab aus den Dokumenten gefischt, diesen zugewiesen und in einer Index-Datei gespeichert. Dieser Index wird vom eigentlichen Such-Script durchsucht. Genau da hakt's jetzt: Ich weiss nicht, wie ich am besten zu Text aus dem jeweiligen Dokument komme.
Mir sind bisher zwei Möglichkeiten eingefallen:
1.) Ich speichere die ersten Zeilen Text zusammen mit den übrigen Informationen (wie Titel, Adresse, Datum) über das jeweilige Dokument in dem Index-File. Das wird zwar die Datei deutlich vergrößern, dürfte die Suche aber nicht erheblich langsamer machen, da dieser Teil des Files ja nicht wirklich durchsucht wird. (Liege ich mit dieser Einschätzung richtig?)
2.) Das Suchskript holt sich den Text nachdem es die Dateien gefunden hat, "live" aus den einzelnen Dokumenten. Das würde meiner Meinung nach die Möglichkeit eröffnen, Text aus der unmittelbaren Umgebung des gefundenen Wortes zu präsentieren, wie man das bei manchen Suchmaschinen sieht. Dafür würde diese Alternative die Suche mit Sicherheit verlangsamen.
Ich bin mir nun nicht sicher, welche dieser Alternativen besser ist; ich bin mir noch nicht mal sicher, ob ich überhaupt auf dem richtigen Weg bin oder ob es andere, deutlich bessere Ansätze gibt. Für Meinungen und Anregungen wäre ich deshalb überaus dankbar. Vielleicht weiß sogar jemand, wie "Profis" dieses Problem angehen?
Vielen Dank (zunächst mal für's Lesen :-)
Tobi H.