Nous avons développé une application Web pour l'appariement des noms. Il fonctionne en divisant les noms en parties et la valeur Soundex de chaque partie est stockée dans une base de données. La métrique de distance Levenshtein est utilisée pour appliquer la correspondance en pourcentage du son ainsi que l'orthographe par rapport à un nom donné.
Au moment de l'exécution, nous chargeons tous les enregistrements en mémoire et appliquons la distance Levenshtein à toutes les valeurs Soundex et l'orthographe de toutes les parties de tous les noms.
Cela fonctionnait bien au début, car il y avait au maximum 20 000 noms, mais maintenant l'un de nos clients a 30 millions de noms. Charger cette énorme liste en mémoire pour chaque requête et appliquer ce type de correspondance est une approche pathétique, utilisant beaucoup de mémoire et de temps d'exécution.
Nous recherchons des suggestions pour rechercher dans la base de données de 30 millions d'enregistrements ou plus dans un avenir proche avec un pourcentage de correspondance entre le son et l'orthographe.
Fonctionnalité de base
L'utilisateur final saisit le nom à mettre en correspondance et le pourcentage minimum. Nous sommes censés afficher tous les noms dans la base de données pour lesquels une partie du nom correspond à une partie du nom donné jusqu'au pourcentage donné. Il n'est pas nécessaire de faire correspondre le nom complet, n'importe quelle partie si les correspondances jusqu'au pourcentage sont réussies. Par exemple.
Given Name: Helen Hunt
Name in DB: Holly Hunter
Les deux parties des deux noms ne correspondent pas exactement, mais dans une certaine mesure, supposons 80%, donc si l'utilisateur entre 80%, le nom dans la base de données doit être affiché comme nom correspondant.