Erstaunlich einfach lässt sich zu einer Website-Suche ein Korrekturvorschlag-Service hinzufügen. Zunächst erstellt man eine Datenbank aller Wörter und deren soundex-Wert. Die soundex-Funktion bildet ähnlich klingende Wörter auf den gleichen vierstelligen Wert ab, der immer aus dem Anfangsbuchstaben sowie drei Ziffern besteht (mehr zum Soundex-System).
Zudem sollte man zu jedem Wort speichern, wie oft dieses insgesamt vorkommt, hat also im Endeffekt zum Beispiel eine Tabelle mit den Spalten word, soundex und occurences.
Um Korrekturvorschläge zu einem Wort zu finden, bildet man dessen Soundex-Wert und liest alle Wörter mit dem gleichen Soundex-Wert aus der beschriebenen Tabelle aus, die mindestens genauso oft vorkommen wie das Wort, für das man Korrekturvorschläge sucht.
Welches dieser in Frage kommenden Wörter schlägt man dem Benutzer nun vor? Die levenshtein-Funktion zum Berechnen der Distanz zwischen zwei Strings hilft weiter. Sollten zwei der in Frage kommenden Korrekturwörter die gleiche Distanz aufweisen, bevorzugt man das häufiger vorkommende.
Idealerweise bräuchte man die Vorselektierung in Frage kommender Wörter anhand deren Soundex-Wert nicht. Dann müsste man jedoch den Levenshtein-Algorithmus über alle Wörter in der Datenbank jagen, was bei vielen Einträgen nicht performant zu bewerkstelligen ist (mehr zum Levenshtein-Algorithmus).
In Aktion sind diese Korrekturvorschläge zu sehen bei ComputerBase. Beispiel-Suche mit absichtlichen Tippfehlern: nvidai gforxe
0 Kommentare:
Kommentar veröffentlichen