Cita:
Empezado por danilo_candales
Ahora el requerimiento es otro y aunque le he investigado, si me dan un norte y me ayudan a ajustar la brújula se los agradeceré infinitamente.
|
Bueno, yo puedo darte un norte.
Busca información acerca de distancia de edición, puede servirte el algoritmo de Levenshtein. Esto te permite determinar que tan lejos se encuentra una palabra de otra. Es decir, en el ejemplo que pones "Karlos" es muy parecido a "Carlos" porque su distancia de edición es 1. En el truco
424 del club escribí algo al respecto. Busca alguna implementación del algoritmo para SQL Server por ejemplo:
http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=51540
Sin embargo, el algoritmo es lento para palabras muy largas, necesitas hacer algo para que la búsqueda sea eficiente. En realidad, todo depende de que tan grande sea el conjunto de datos que estás atacando. El truco está en reducir el número de comparaciones que debes hacer para encontrar las palabras cercanas. Por ejemplo, si escribo "Karlos" y deseo buscar los registros que tienen nombres parecidos a este, puedo descartar palabras cuya longitud sea mayor o igual a 10 por decir algo. De ante mano sé que no están dentro del rango de la búsqueda. Tal vez debas crear tablas auxiliares o clases de equivalencia o poner algunas reglas adicionales.
Saludos