Artikel im Internet unter http://www.hidemail.de/blog/schande-ueber-mich---ich-habe-php-benutzt.shtml.
Montag, 14.1.2008, 15:16:39 Uhr

Schande über mich - Ich habe PHP benutzt


Ja, so könnte die Überschrift lauten, wenn man für einen Perl-Blog auf PHP ausweichen muß...

Aber ganz so schlimm ist es ja auch nicht!

Ich habe heute endlich mal 'ne eigene Suchmaschine in diesen Blog eingebaut, und da mir die Probleme mit der Parameterübergabe und shtml-Seiten wohl bekannt waren, bin ich diesmal gleich auf php umgestiegen.

Obwohl die Suchmaschine natürlich in Perl gescripted ist, wird der Aufruf der Suchmaschine in PHP gestarted. Übrigens mit einem include(), für alle die, die's interessiert.

Wie dem auch sei: Man kann sich ja auch mal bei der "Konkurrenz" bedienen, wenn es sinnvoll ist.

Ich hoffe, die Suchfunktion tut ihre Arbeit, so weit ich getested habe, funktionierte alles... Bei Problemen am Besten 'nen Kommentar posten...

Durchsucht werden übrigens "nur" die Blog-Beiträge, nicht die Kommentare oder sowas...

So nebenbei nutze ich als Datenspeicher wieder mein Cache-Modul, das auch hier prima Arbeit leistet.



Nachtrag
Aufgrund der Anfrage unten in den Kommentaren, hier eine kleine Anleitung, wie ich mein Suchscript gestaltet habe:

Also der Sinn einer Suche ist ja, die Wörter, die gesucht werden, den Seiten zuzuweisen, die diese Wörter enthalten.

Deswegen muß man also alle Seiten in die einzelnen Wörter zerlegen. Wie das so ungefähr geht, habe ich hier beschrieben.
Diese einzelnen Wörter muß man dann abspeichern, zusammen mit der entsprechenden Seite.
Das könnte in etwa so aussehen:
wo
1,2,56,34,33
wie
22,44,53
usw.

Jedes Wort bekommt also so als Rattenschwanz all die Seiten, in denen es vorkommt.

Die Wörter sollte man übrigens erst in Kleinschreibung wandeln, bevor man sie verarbeitet. Das spart Festplattenplatz, da Wörter wie Das, das oder DAS sowieso immer das gleiche bedeuten.

Möglich wäre übrigens auch eine Gewichtung des Wortes, das es auf der Seite hat. So ist ein Wort in der Überschrift z.B. wichtiger, als wenn es nur einmal in einer 100KB-Datei liegt.

Jetzt hat man also all die Wörter, sinnig ist es vielleicht auch, den Seitentitel zwischenzuspeichern. Dies spart möglicherweise etwas Zeit bei der Ausgabe der Ergebnisse. In meinem Fall ziehe ich die Überschriften allerdings aus der Datenbank, wo sie sowieso schon herumlagern und schnell abzurufen sind.

Nun zur Suche
Der User gibt also ein Wort ein, z.B. Datei.
Das Script such nun nach dem Eintrag 'Datei' und findet den Rattenschwanz mit den Seiten, auf denen 'Datei' steht.

Diese Seiten werden nun ausgegeben, mit Titel.
Sollte man eine Gewichtung bzw. ein Ranking verwenden, werden die Ergebnisse vorher sortiert.

Im großen un Ganzen war's das schon, den Quelltext will ich nun aber nicht veröffentlichen...

Die Suche nach den ähnlichen Worten ist genauso simpel
Man nehme alle vorhandenen Worte und stelle einen "Pool" von falsch geschriebenen Worten her, also z.B.
Aus datei wird (ein Buchstabe vergessen)
atei
dtei
daei
dati
date

Aus datei wird (ein Buchstabe vertauscht)
adtei
dtaei
daeti
datie

usw.

Falls aus der Suche mit den Originalworten keine Treffer hervorgingen, werden nun die Falsch-Worte mit den User-Eingaben verglichen. Bei Treffern gibt man die freundliche Frage aus, ob der User vielleicht das entsprechende, real existierende Wort meinte.

Also alles keine Zauberei...


Artikel im Internet unter http://www.hidemail.de/blog/schande-ueber-mich---ich-habe-php-benutzt.shtml.