Frage

eine sehr große Datenbank mit Produktnamen gegeben, wie würden Sie mögliche Fehler in Nutzer suchen und mögliche Korrekturen (Kinda wie die Art und Weise Google präsentiert sie)?

erkennen

z.

Der Benutzer gibt "fork handel" und drückt 'Suche'.

Sie zurück

"Keine Ergebnisse. Meinen Sie 'Gabelgriffe'?"

War es hilfreich?

Lösung

Es gibt mehrere Ansätze für dieses Problem:

  1. Keeping eine Tabelle von beliebtesten Fehlbuchstabierungen in der Datenbank. Wenn Sie einige häufige Rechtschreibfehler benötigen: hier )
  2. unter Verwendung eines Algorithmus basierend auf der Editierdistanz : In der Informations Theorie und Informatik ist die edit-Distanz zwischen zwei Zeichenketten die Anzahl der Operationen erforderlich, um einen von ihnen in die andere zu verwandeln. Es gibt verschiedene Algorithmen zu definieren oder diese Metrik zu berechnen. Lesen Sie die Wikipedia-Artikel für den Levenshtein Algorithmus zum Beispiel.
  3. Wenn Sie Lucene für die Volltextsuche verwenden, hier ist ein schöner Artikel , die zeigt, wie das umzusetzen „meinen Sie“ -Funktion.
  4. Wenn Sie diese Funktion als einfache Rechtschreibkorrektur zu sehen, hier sind ein paar schönen, sehr kurzen Implementierungen in verschiedenen Sprachen: Wie eine Rechtschreibung Korrektor schreiben

Andere Tipps

Sie könnten einen Laut Algorithmus wie Soundex Übereinstimmungen zu finden, die ähnlich klingen.

PostgreSQL verfügt über ein Modul mit dem Namen fuzzystrmatch , wobei die Dokumente zeigen, Beispiele für die Verwendung Soundex, Levenshtein, Metaphone und Double Metaphone.

Ich bin sicher, dass ich gelesen, dass Google eine Liste von dem, was ein Benutzer tippt hält, wenn sie keine Ergebnisse. Sie könnten eine Zuordnung dieser Werte halten (sagen, wenn die abgetippt Zeichenfolge mit dem gleichen Buchstaben beginnt).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top