Hi Christoph,
Aber nebenbei: selbst so ein einfacher Index, wie er Dir vorschwebt verbrät ordentlich Platz:
Gesetzt den Fall, das nach Abzug aller Stopwörter und sonstigem Mist alle Wörter (= mit Leerzeichen/Newline getrennte Buchstabenanhäufungen) niedergemacht (lowercase()) werden, kommen da bestimmt so um die 100.000 Worte zusammen. Alle komprimiert (32Bit reicht da völlig) und mit einem Pointer (auch mal von 32Bit ausgegangen) auf die eigentlichen Metadaten versehen macht das 800.000 Oktets. Overhead der Hashtable/des Baumes gar nicht mitgerechnet.
soweit korrekt.
Also alleine schon ein knappes Gig für die platzsparendste(!) Lösung!
ein knappes MB :) Oder scklucken deine Oktets 1KB?
Ich schätze 10-100MB maximal mit Sonderfeatures.
Was da bei einer auch nur _etwas_ mehr auf Geschwindigkeit ausgelegter Lösung zusammenkommt muß ich ja hier nicht mehr vorrechnen, oder? ;-)
Ich denke Hashtabllen sind ziemlich unschlagbar.
Dazu ist der Komfort des oben beschriebenen Primitivstindexes nicht sehr sonderlich, da würden sich mit Sicherheit alle beschweren.
der deckt aber m.E. 90% aller Abfragen ab, für den Rest braucht es noch den 2. Suchschritt zum Ausfiltern. (schätze weitere 9% suchen nach Phrasen wie "meines Erachtens")
so short
even shorter ;)
rolf
PS: Eins hab ich noch außer acht gelassen: Ich habe vereinfacht angenommen an suche ganze Wörter. Man bräuchte noch eine vorgeschaltete Suche die ermittelt in welchen Stichwörtern beliebige Teilwörter vorkommen. Sowas lässt sich nur schlecht "verhashen", da wäre ne DB wohl stärker...