S'il existe des systèmes pour faire de l'autocomplétion en javascript, tous ont le même défaut: ils ne sont pas capable de detecter des fautes de frappe ou de proposer des résultats qui s'approchent de la recherche voulue.

Mailcheck propose un système qui s'en approche: il permet de corriger les fautes de frappe dans un nom de domaine par exemple. Il utilise une fonction venant de sift3 : Super Fast and Accurate string distance algorithm. Dans la version 4 (sift4), la version Simplest gère les rempalcement/ajout/suppression de caractère (Distance de Levenshtein) . La version common gérant les transpositions (Distance de Damerau-Levenshtein).

Cet algorythme se base sur le calcul de la plus longue distance de chaine commune. Hors il reste un problème : imaginons que notre mot à chercher dans une liste de phrase ne soit pas unique mais que l'on souhaites chercher plusieurs mots, avec d'éventuelles fautes de frappe.

J'ai donc mis en place un petit script qui calcule pour un mot chercher un score pour chaque phrase d'une liste. Ce score est d'autant plus élevé que les sous-chaines de la recherches trouvées dans les phrases sont longues et nombreuses.

Il est disponible ici: http://codepen.io/keul/pen/rrNpAA