![]() |
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 :) |
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 |
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. |
Que tal Soundex?
|
Cita:
// Saludos |
¡Ah! Disculpa. Quizá te refieres al Soundex en Delphi No sé qué algoritmo use pero sí, supongo que puede funcionarle.
// Saludos |
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 :
- Te situa el puntero en ese registro. |
Cita:
"Quizás quiso decir: delphi" // Saludos |
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 |
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 ?
|
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 23:28:39. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi