Necesito ayuda de programación para mi aplicación en Delphi
Hola expertos.
Esta pregunta es más de programación y la pongo acá porque mi aplicación esta hecha en delphi. :)
El caso es el siguiente:
Tengo una Tabla T que tiene digamos 2 campos y uno de ellos es de un tipo cadena de 500 caracteres ( campo2: string[500])
El usuario introduce una cadena del mismo tamaño ( En realidad es una cadena generada randomicamente ) y yo quiero realizar una búsqueda en la base de datos y encontrar la cadena más similar a la que introdujo el usuario.
Parecería que con un ordenamiento y una búsqueda binaria funcionase, pero no es así, por ejemplo con los siguientes datos
C_Usuario: 11114589999934567
C_BD1: 11114489121232345
C_BD2: 11117947999934567
C_BD3: 11118789999934567
La búsqueda nos daría como resultado que el código aproximado al introducido por el usuario es el primero (C_BD1) pero en realidad el que se busca es el tercero (C_BD3) porque es el más parecido al introducido por el usuario.
Tampoco es efectivo una busqueda caracter por caracter, por ejemplo en el siguiente caso:
C_Usuario: 11114589999934567
C_BD1: 11114467121232345
C_BD2: 11117947999934567
C_BD3: 11118767999934567
C_BD4: 11114589999934511
C_BD5: 11114578999934556
La cadena más próxima a la introducida por el usuario es la quinta (C_BD5)... La C_BD4 es la más parecida pero por ubicación de los caracteres (Diferencia de los últimos dos caracteres)pero la C_BD5 es la más parecida porque toda la cadena es casi igual ( C_Usuario: 11114589999934567 - C_BD5: 11114578999934556, es parecida en el valor numérico de los caracteres y ESO ES LO QUE SE BUSCA)
Espero que me ayuden si alguna vez tuvieron un problema parecido, yo pienso que debe existir un algoritmo de búsqueda por aproximación en el que no se busca un elemento exactamente igual en una lista sino que se busca el elemento más parecido (y claro si es igual mucho mejor).
Gracias por la lectura, espero que me ayuden.
Esta pregunta es más de programación y la pongo acá porque mi aplicación esta hecha en delphi. :)
El caso es el siguiente:
Tengo una Tabla T que tiene digamos 2 campos y uno de ellos es de un tipo cadena de 500 caracteres ( campo2: string[500])
El usuario introduce una cadena del mismo tamaño ( En realidad es una cadena generada randomicamente ) y yo quiero realizar una búsqueda en la base de datos y encontrar la cadena más similar a la que introdujo el usuario.
Parecería que con un ordenamiento y una búsqueda binaria funcionase, pero no es así, por ejemplo con los siguientes datos
C_Usuario: 11114589999934567
C_BD1: 11114489121232345
C_BD2: 11117947999934567
C_BD3: 11118789999934567
La búsqueda nos daría como resultado que el código aproximado al introducido por el usuario es el primero (C_BD1) pero en realidad el que se busca es el tercero (C_BD3) porque es el más parecido al introducido por el usuario.
Tampoco es efectivo una busqueda caracter por caracter, por ejemplo en el siguiente caso:
C_Usuario: 11114589999934567
C_BD1: 11114467121232345
C_BD2: 11117947999934567
C_BD3: 11118767999934567
C_BD4: 11114589999934511
C_BD5: 11114578999934556
La cadena más próxima a la introducida por el usuario es la quinta (C_BD5)... La C_BD4 es la más parecida pero por ubicación de los caracteres (Diferencia de los últimos dos caracteres)pero la C_BD5 es la más parecida porque toda la cadena es casi igual ( C_Usuario: 11114589999934567 - C_BD5: 11114578999934556, es parecida en el valor numérico de los caracteres y ESO ES LO QUE SE BUSCA)
Espero que me ayuden si alguna vez tuvieron un problema parecido, yo pienso que debe existir un algoritmo de búsqueda por aproximación en el que no se busca un elemento exactamente igual en una lista sino que se busca el elemento más parecido (y claro si es igual mucho mejor).
Gracias por la lectura, espero que me ayuden.
1 respuesta
Respuesta de gaunmanuel
1