Hemos desarrollado una aplicación web para la coincidencia de nombres. Funciona dividiendo los nombres en partes y el valor Soundex de cada parte se almacena en una base de datos. La métrica de distancia de Levenshtein se utiliza para aplicar la coincidencia porcentual del sonido, así como la ortografía de un nombre de pila.
En tiempo de ejecución, cargamos todos los registros en la memoria y aplicamos la distancia de Levenshtein a todos los valores de Soundex y la ortografía de todas las partes de todos los nombres.
Al principio esto funcionaba bien porque había un máximo de 20 mil nombres, pero ahora uno de nuestros clientes tiene 30 millones de nombres. Cargar esta lista enorme en la memoria para cada solicitud y aplicar este tipo de coincidencia es un enfoque patético, que utiliza mucha memoria y tiempo de ejecución.
Estamos buscando sugerencias para buscar en la base de datos de 30 millones de registros o más en un futuro cercano con un porcentaje de coincidencia de sonido y ortografía.
Funcionalidad central
El usuario final ingresa el nombre que debe coincidir y el porcentaje mínimo. Se supone que debemos mostrar todos esos nombres en la base de datos para los cuales cualquier parte del nombre coincide con cualquier parte del nombre dado hasta el porcentaje dado. No se requiere que el nombre completo coincida, cualquier parte si coincide con el porcentaje es un éxito. Por ejemplo.
Given Name: Helen Hunt
Name in DB: Holly Hunter
Ambas partes de ambos nombres no coinciden exactamente, pero hasta cierto punto, supongamos que 80%, por lo que si el usuario ingresa 80%, el nombre en DB debe mostrarse como nombre coincidente.