Abbiamo sviluppato un'applicazione basata sul Web per la corrispondenza dei nomi. Funziona suddividendo i nomi in parti e il valore Soundex di ogni parte è memorizzato in un database. La metrica di distanza Levenshtein viene utilizzata per applicare la corrispondenza percentuale del suono e l'ortografia di un determinato nome.
In fase di runtime, cariciamo tutti i record in memoria e applichiamo la distanza Levenshtein a tutti i valori Soundex e all'ortografia di tutte le parti di tutti i nomi.
All'inizio funzionava bene perché c'erano al massimo 20.000 nomi, ma ora uno dei nostri clienti ha 30 milioni di nomi. Il caricamento di questo elenco enorme in memoria per ogni richiesta e l'applicazione di questo tipo di corrispondenza è un approccio patetico, che utilizza molta memoria e tempi di esecuzione.
Stiamo cercando suggerimenti per la ricerca di un database di 30 milioni di dischi o più nel prossimo futuro con la corrispondenza percentuale di suoni e ortografia.
Funzionalità di base
L'utente finale inserisce il nome da abbinare e la percentuale minima. Dovremmo mostrare tutti quei nomi nel database per cui qualsiasi parte del nome corrisponde a qualsiasi parte del nome dato fino alla percentuale data. Non è necessario che il nome completo sia abbinato, qualsiasi parte se la corrispondenza fino alla percentuale è un successo. Ad esempio.
Given Name: Helen Hunt
Name in DB: Holly Hunter
Entrambe le parti di entrambi i nomi non corrispondono esattamente ma in una certa misura, assumiamo l'80%, quindi se l'utente inserisce l'80%, il nome in DB deve essere mostrato come nome corrispondente.