Abbiamo sviluppato un'applicazione basata sul Web per la corrispondenza dei nomi. Funziona suddividendo i nomi in parti e il valore Soundex di ciascuna parte viene archiviato in un database. La metrica della distanza Levenshtein viene utilizzata per applicare la corrispondenza percentuale del suono e l'ortografia rispetto a un determinato nome.
In fase di esecuzione, cariciamo tutti i record in memoria e applichiamo la distanza di Levenshtein a tutti i valori di Soundex e l'ortografia di tutte le parti di tutti i nomi.
All'inizio funzionava bene perché c'erano al massimo 20 mila nomi, ma ora uno dei nostri clienti ha 30 milioni di nomi. Caricare questo enorme elenco in memoria per ogni richiesta e applicare questo tipo di corrispondenza è un approccio patetico, usando molta memoria e tempi di esecuzione.
Siamo alla ricerca di suggerimenti per la ricerca nel database di 30 milioni di record o più nel prossimo futuro con una 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 i quali ogni parte del nome corrisponde a qualsiasi parte del nome dato fino alla percentuale indicata. Il nome completo non deve essere abbinato, qualsiasi parte se corrisponde alla percentuale è un successo. Per esempio.
Given Name: Helen Hunt
Name in DB: Holly Hunter
Entrambe le parti di entrambi i nomi non corrispondono esattamente ma fino a un certo punto, ipotizziamo l'80%, quindi se l'utente immette l'80%, il nome nel DB deve essere mostrato come nome corrispondente.