Reiner: Suchscript: Gewichtung der Fundstellen

Beitrag lesen

hi,

1.) Jede Fundstelle für einen Suchbegriff bekommt 1 Punkt

Siehst du? _Genau das_ möchte ich halt nicht als verbale Beschreibung lesen, sondern dazu in den zugehörigen Quelltext schauen. Was du in Worten beschreibst, ist das, was du haben möchtest. Was dein Quelltext bzw. dein Code zeigt, ist aber das, was du tatsächlich tust. Bei einem Perl-Script kann das manchmal bereits die shebang sein, oder im Scriptverlauf irgendeine falsch gesetzte Variable. Sowas findet man eben wirklich _nur dann_ heraus, wenn du deine wörtliche Erklärung mit der Preisgabe deines (Arbeits-)Codes vergleichen läßt.

sorry, aber das ist eine völlig falsche Herangehensweise!
Jemand, der sein Problem und eine mögliche Lösung nicht etwas abstrakter Beschreiben und dies diskutieren kann, sollte gar nicht erst anfangen zu programieren! Dabei kommt meist toller Code raus!
Dabei meine ich noch nichtmal den Code in seiner Form sondern in seiner Idee zur Lösung des Problems!

Suchbegriff = Wein.

Öhm ... och nö. Hier im Forum habe ich das Monopol auf "Holunderwein" ;-)

"Weinen" bekommt 1 Punkt, "Schwein" 1 Punkt, "Wein" 1 Punkt.
Man merkt: Haut nicht so hin.

Genau. Weil du den Holunderwein ausgelassen hast ;-)

Also nix für ungut: lade dein Script als Textdatei irgendwo auf eine temporäre Adresse hoch, daß man es sich anschauen kann. Es geht wirklich nicht darum, auf diese Weise irgendwelche "Freeware" zu erhalten, sondern es geht darum, dir beim Debugging deines Scripts zu helfen.

Tue es nicht (nur)!
Es sollte eher diskutiert werden, was für Algorithmen interessant erscheinen.

Da ich mich (etwas) mit Suchmaschinen beschäftige, sehe ich eine Menge Möglichkeiten Gewichtungen hinzubekommen. Dabei muß man sagen, daß es eine perfekte Lösung nicht gibt, zumindest nicht, wenn das Gerät noch schnell sein soll und dennoch auch - was ich wichtig finde - unscharf suchen kann.
Z.B. können Google und Co. wohl alle nicht wirklich unscharf suchen, sie können Joker nur am Wortende - nie am Anfang setzen. Deshalb sind sie auch so schnell.
So würde eine Anfrage nach "Wein" bei Google niemals "Holunderwein" finden.

Zum Punkt Gewichtung:
Wie gesagt, man sollte _noch_ nicht vom Code sprechen! Aber interessant wäre, ob Du ein DBMS (wie MySQL) benutzt! Dann ist interessant, wie groß der Wortraum werden wird, d.h. wie groß ist der Datenumfang.
Bei MySQL bietet sich u.a. eine Volltextsuche an, die aber bei großen Datenmengen zu langsam wird und Teilwortsuchen auch nur bedingt kann.
Die Gewichtung würde hier automatisch erfolgen (über SQL).

Andere Möglichkeit:
Ziehe alle relevanten Worte in eine Tabelle, indiziere diese Worte und berechne für jedes Dokument pro Wort eine Relevanz. Dabei wäre die Relevanz z.B. einfach der Quotient "Anzahl des Wortes" / "alle Worte im Dokument"

Gruß
Reiner