Ver Mensaje Individual
  #2  
Antiguo 17-11-2007
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Reputación: 20
Héctor Randolph Va por buen camino
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
Responder Con Cita