No estoy pidiendo acerca de cómo implementar el algoritmo de corrección ortográfica en sí. Tengo una base de datos que contiene cientos de miles de registros. Lo que estoy buscando hacer es verificar la entrada de un usuario contra una cierta columna en una tabla para todos estos registros y devolver cualquier coincidencia con una cierta distancia cortada (de nuevo, esta pregunta no trata de determinar la distancia de corte, etc.). El objetivo, por supuesto, es crear una característica "¿quisiste decir?", Donde un usuario busca un nombre, y si no se encuentran coincidencias directas en la base de datos, se devuelve una lista de posibles coincidencias.La creación de un "cheque de encanto" que comprueba contra una base de datos con un tiempo de ejecución razonable
estoy tratando de llegar a una manera de hacer todas estas comprobaciones en el tiempo de ejecución más razonable posible. ¿Cómo puedo verificar la entrada de un usuario contra todos estos registros de la manera más eficiente posible?
La característica se implementa en la actualidad, pero el tiempo de ejecución es extremadamente lento. La forma en que funciona ahora es que carga todos los registros de una tabla (o tablas) especificada por el usuario en la memoria y luego realiza la comprobación.
Por lo que vale la pena, estoy usando NHibernate para acceso a datos.
Le agradecería cualquier información sobre cómo puedo hacer esto o cuáles son mis opciones.
Hmmm, buena pregunta! !! ';)' – jjnguy
La manera más fácil (dado que ya lo ha implementado) sería hacer lo que Conrad sugirió, y cargar la base de datos una vez cuando se carga el programa. En cuanto a golpear la base de datos más de una vez, realmente necesitaría ver la lógica detrás de sus sugerencias para encontrar la mejor manera de consultar su base de datos. – Rob
Si carga todos los registros DB en la memoria, ¿tiene que administrar la sincronización de los datos cuando cambia la base de datos o son datos estáticos? –