Hi,
Mich würde interessieren darüber zu debattieren, wie eine Implementierung einer solch nutzerfreundlichen Funktion aussieht:
Ich habe einmal so eine ähnliche Funktion für eine kleine Suchmaschine geschrieben. Dabei ging ich folgendermaßen vor.
Es existert ein Keyword-Table, ua mit folgenden Spalten:
-------------------
keyword = das Wort
page_count = Vorkommen des jweiligen Wortes auf Seiten
search_count = Wie oft haben User nach dem Wort gesucht
-------------------
Zusätlich existert eine Tabelle mit häufigen Phrasen
1.) Jedes Wort wird geprüft, ob es einen entsprechenden Schwellenwert aus search_count/page_count überschritten hat.
- Wenn nicht, wird versucht, eine ähnliche Phrase zu finden
(dazu hab ich etwas aus LIKE und REGEXP zusammgeflickt, das aus ähnlichem Anfang und Ende oder einem Buchstabenvorrat, der um häufige Tippfehler (ß <-> ss, ai <-> ei <-> ay, kk <-> ck, ch <-> sch usw) ergänzt wurde, ähnliche Treffer mit hohem Vorkommen liefert.
2.) Wird keine Phrase gefunden, wird für jedes - mit hoher Wahrscheinlichkeit falschgeschriebene Wort - nach dem selben Schema ein passendes Ersatzwort geliefert.
3.) Aus Wortähnlichkeit und Häufigkeit/Beliebtheit wird ein Faktor berechnet, der eine entsprechende Schwelle überschreiten muss.
Ob es Google ähnlich macht, weiß ich nicht, es könnte aber sein, daß sie für häufige Verschreiber bereits Worte / Phrasen auf Lager haben, ohne große Vergleiche berechnen zu müssen (performance).
Das größte Problem besteht meines Erachtens darin, zu erkennen, wann etwas falsch geschrieben ist. Wenn ich Suchmaschine wäre und bei einem ähnlichen Wort / Phrase sehr viel mehr anbieten könnte, würde ich nicht ruhig bleiben: Meintest du ... ;)
herzliche Grüße,
Jonny 5