Mysql
 sql >> Base de données >  >> RDS >> Mysql

Suggérer d'autres requêtes pour les orthographes archaïques (par exemple Did You Mean de Google)

Le "vouliez-vous dire" de Google est assez intéressant :Comment fonctionne le "Voulez-vous dire ?" de Google ? L'algorithme fonctionne ?

Dans le passé, j'ai réussi à implémenter quelque chose de similaire avec SOUNDEX qui peut se rapprocher de cette fonctionnalité.

Martin, Martyn et Martine produisent la même sortie de SOUNDEX .

Vous pouvez inclure tous les résultats du SOUNDEX correspondent, ou sélectionnez les résultats demandés, puis select distinct name from table where SOUNDEX(name) = SOUNDEX(search_var) comme vos "suggestions".

En tant qu'optimisation, vous pouvez pré-calculer SOUNDEX sur les champs de recherche et le conserver en tant que colonne indexée pour éviter les analyses de table.

Ce n'est pas aussi sophistiqué que Did You Mean de Google, mais vous pouvez vous en approcher raisonnablement très rapidement.