Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   buscar palabras parecidas (estilo google) - "quiso decir...." (https://www.clubdelphi.com/foros/showthread.php?t=17820)

ksellas 22-01-2005 20:51:19

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 :)

roman 23-01-2005 20:25:24

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

EdMax 24-01-2005 21:23:54

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.

mamcx 24-01-2005 22:08:23

Que tal Soundex?

roman 24-01-2005 22:48:24

Cita:

Empezado por mamcx
Que tal Soundex?

Pues sí, ¿pero en Paradox? Con trabajos tiene Count y Sum :D

// Saludos

roman 24-01-2005 22:54:46

¡Ah! Disculpa. Quizá te refieres al Soundex en Delphi No sé qué algoritmo use pero sí, supongo que puede funcionarle.

// Saludos

!3d1@n 24-01-2005 23:05:36

Quisiera ayudar
 
Hola.
Quisiera ayudar :D . 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.

roman 24-01-2005 23:17:02

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

roman 24-01-2005 23:22:05

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

BdeKiller 25-01-2005 23:43:16

soundex
 
Creo que la función soundEx funciona bien para palabras que suenen igual en ingles, pero quizá deberiamos hacer una parecida para español , que os parece ?

ksellas 26-01-2005 01:30:49

Gracias a tod@s :)

La verdad, no se que hacer. Voy a empezar por implementar el diccionario. Despues voy a investigar el algoritmo SOUNDEX, aunque no se si sera lo que necesito. He encontrado esto:

http://www.jewishgen.org/InfoFiles/soundex.html

Descarga Soundex.zip para idioma ingles:
http://www.programmersheaven.com/zone2/cat66/6062.htm

Descarga Soundex2.zip para idioma Español:
http://www.dbwide.com.ar/fuentes11.htm


Ya os contare

Saludos!


La franja horaria es GMT +2. Ahora son las 11:32:01.

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