Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-01-2005
ksellas ksellas is offline
Registrado
 
Registrado: ene 2005
Posts: 5
Poder: 0
ksellas Va por buen camino
buscar palabras parecidas (estilo google) - "quiso decir...."

Hola

Tengo un programa en el que hago busquedas segun se va escribiendo, busquedas por palabras o parte de ellas. Pero para rematarlo es cuando se utiliza la opcion de buscar por palabras que haya una opcion para decirle si ha de buscar palabras parecidas. Osea, a ver si me explico: Si el usuario escribe la palabra "VALHELSING" y lo escribe mal o tal vez lo dio de alta mal (suele pasar ) y a la hora de buscarlo lo escribe bien el puñetero, jeje :P, pues que el programa buscara en un diccionario en el cual se almacenaran las palabras que se utilizan al dar de alta cada articulo.
Pero no se como se puede implementar esto. Esto seria con tablas PARADOX y TTABLE.
Supongo que con SQL habra mas posibilidades, pero no estoy muy puesto y se que deberia empezar a trabajar con SQL, pero de momento todo lo que tengo va a tener que esperar.

En fin, ¿puede alguien ayudamre?, por favor

Gracias
Responder Con Cita
  #2  
Antiguo 23-01-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
No sé cómo lo hace Google y no sé cómo implementarlo en Paradox pero pienso que necesitas una forma de medir qué tan distinta es una palabra de otra. Hay una cosa que se llama Levenshtein Distance que es una función que te devuelve la "distancia" entre dos cadenas. Si las cadenas son iguales la distancia es cero y entre mayor sea la distancia, más distintas son.

Con esta función podrías recorrer el diccionario y ver aquellas palabras que no disten mucho de la que pone el usuario.

// Saludos
Responder Con Cita
  #3  
Antiguo 24-01-2005
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Que tal Soundex?
__________________
El malabarista.
Responder Con Cita
  #4  
Antiguo 24-01-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por mamcx
Que tal Soundex?
Pues sí, ¿pero en Paradox? Con trabajos tiene Count y Sum

// Saludos
Responder Con Cita
  #5  
Antiguo 24-01-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¡Ah! Disculpa. Quizá te refieres al Soundex en Delphi No sé qué algoritmo use pero sí, supongo que puede funcionarle.

// Saludos
Responder Con Cita
  #6  
Antiguo 24-01-2005
Avatar de !3d1@n
!3d1@n !3d1@n is offline
Miembro
 
Registrado: ene 2005
Ubicación: Ciudad Habana - Cuba
Posts: 46
Poder: 0
!3d1@n Va por buen camino
Lightbulb Quisiera ayudar

Hola.
Quisiera ayudar . Apesar de que llevo poco tiempo en esto me encanta la programación, asi que, por favor si algun error, tratar de corregirmelo. Gracias

Me parece que con el Locate quizas resuelva ese problema . Te explico :

Código Delphi [-]
  
 Table1.Locate('NombreDelCampo','Palabra parecida',[loCaseSensitive]);

- Te situa el puntero en ese registro.
__________________
Saludos ... JLedian.
Responder Con Cita
  #7  
Antiguo 24-01-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por !3d1@n
Me parece que con el Locate quizas resuelva ese problema . Te explico :
Locate no funcionará. A lo sumo, si se incluye la opción loPartialKey, encontrará palabras que empiecen igual, por ejemplo si busca "delp" es posible que se situe en "delphi", pero si busca "delpi" no la encontrará. En Google, si buscas "delpi" te dice:

"Quizás quiso decir: delphi"

// Saludos
Responder Con Cita
  #8  
Antiguo 24-01-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pero ya entrados en gastos y siguiendo la idea de mamcx, podría agregar un campo a la tabla donde guarde el Soundex de cada palabra en la tabla y hacer el Locate sobre este campo usando Soundex('palabra a buscar').

En este caso, en la prueba mínima que acabo de hacer, busco "delpi" y me encuentra "delphi"

// Saludos
Responder Con Cita
  #9  
Antiguo 24-01-2005
EdMax EdMax is offline
Registrado
 
Registrado: ene 2005
Posts: 1
Poder: 0
EdMax Va por buen camino
Conozco una aplicación desarrollada en MSSQL que utilizan búsquedas de éste tipo. Ésta búsqueda se aplica sobre una base de datos tal que uno de sus campos contiene un documento (creo que del tipo PDF). Me pareció una función realmente importante, y con un grado de aplicación importantísima.
Alguien conoce si Interbase la dispone?
Gracias.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 16:28:35.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi