Jump to content


Photo

Buscar una cadena de texto dentro de cualquier fichero


  • Please log in to reply
3 replies to this topic

#1 juank1971

juank1971

    Newbie

  • Miembros
  • Pip
  • 8 posts
  • LocationCuba

Posted 20 January 2011 - 12:26 PM

Saludos Delphianos:
Amigos Hace un buen rato vengo programando algo en delphi para manejo de archivos y me he encontrado con un problema que no acabo de creer que delhi no tenga una solución .

Alguno tiene una idea o algun fragmento de codigo para hacer búsquedas de una cadena de texto dentro de los ficheros, que incluya buscar en PDF. tengo algo hecho pero solo busca dentro de los ficreros .doc .xls y txt.

y otra duda alguien tiene idea de como se pueden hacer busquedas instantaneas en delphi, que usan los programas que buscan tan rápido como Google desktop
AvaFind ect, que usan , se podrá implementar en delphi algo como eso?.
  • 0

#2 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2137 posts

Posted 20 January 2011 - 04:04 PM

Alguno tiene una idea o algun fragmento de codigo para hacer búsquedas de una cadena de texto dentro de los ficheros, que incluya buscar en PDF. tengo algo hecho pero solo busca dentro de los ficreros .doc .xls y txt.

Para esto esperemos que pasen por acá los maestros Chackal, Escafandra o Seoane que son los duros en esto,  u otro compañero con  conocimientos del tema.

y otra duda alguien tiene idea de como se pueden hacer busquedas instantaneas en delphi, que usan los programas que buscan tan rápido como Google desktop
AvaFind ect, que usan , se podrá implementar en delphi algo como eso?.


Con base en el hilo que posteaste en Datasnap (que me imagino que es para lo mismo) se me ocurre lo siguiente:

1- Me imagino que tienes una tabla en la Db donde almacenas el nombre de los documentos y la ruta, supongamos que esa tabla se llama 'Documentos' y que su clave principal es Id_Documento de tipo entero. Sugiero que  crees una tabla de detalles de nombre 'Tags', con un campo Id_Documento que actue como clave foránea y que apunte a la tabla 'documentos', mas otro campo de nombre 'Tag' de tipo Varchar para almacenar las palabras.

2- Entonces podrías asignar manualmente las palabras claves de cada documento en la tabla 'Tags', luego sería muy práctico buscar documentos con base en las palabras claves.

ALGO UN POCO MAS COMPLEJO (asignar los Tags automáticamente)


3- Crear un array de string con las palabras más comunes para excluirlas  a la hora de guardar como también quitarlas de los parámetros de búsqueda, por ejemplo las palabras: (el, la, los, la de,  con, un, una, unos, números,  y las que se te ocurran).

4- A la hora de guardar un documento nuevo  se haría lo siguiente: Recorrer el documento y comparar cada palabra con las palabras del array de exclusión y guardar en la tabla 'Tags' las palabras no excluidas y  que a su vez no estén todavía en la tabla.

CONCLUSION

Esta idea tiene un relativo coste  en el proceso a la hora de guardar, pero es muy efectivo a la hora de buscar puesto que las búsquedas involucran una sola tabla.
Pero creo que es preferible perder un poco de tiempo a la hora de guardar (un documento a la vez) que tener que recorrer todos los documentos en cada búsqueda.

PD: Es solo una idea.

Saludos
  • 0

#3 juank1971

juank1971

    Newbie

  • Miembros
  • Pip
  • 8 posts
  • LocationCuba

Posted 21 January 2011 - 07:48 AM

ok Gracias amigo por tus respuestas .

voy implementar soluciones a ver que encuentro mejor.

salud y pesetas y gracias por tus lineas.

juank
  • 0

#4 juank1971

juank1971

    Newbie

  • Miembros
  • Pip
  • 8 posts
  • LocationCuba

Posted 21 January 2011 - 08:38 AM

lo que me parece que ya se esta usando mas son los ifilters y hay una forma de indexado para las busquedas que creo surgio con el sql server 2008 de microsoft, lo que no encuentro información de eso clara, la que he visto no me queda claro como implementarlo en delphi, pero me parece que es lo que usan en windows seven para buscar y he visto algo de codigo pero todo en c# y no he podido sacar conclusiones como para poder implementarlo en delphi.

  • 0




IP.Board spam blocked by CleanTalk.