Foros del Web » Programación para mayores de 30 ;) » Programación General »

Busquedas de informacion

Estas en el tema de Busquedas de informacion en el foro de Programación General en Foros del Web. Hola a todos: Estoy haciendo una pequeña aplicacion, usando Perl y MySQL, en la que una de las opciones, es la busqueda de informacion en ...
  #1 (permalink)  
Antiguo 17/11/2007, 19:00
 
Fecha de Ingreso: septiembre-2006
Mensajes: 14
Antigüedad: 17 años, 7 meses
Puntos: 0
Busquedas de informacion

Hola a todos:
Estoy haciendo una pequeña aplicacion, usando Perl y MySQL, en la que una de las opciones, es la busqueda de informacion en documentos, que estan en una tabla en campos "text".
Realmente esos programas me estan funcionando razonablemente bien, solo que ahora necesito ampliar un poco la busqueda; resulta que mi programa de busqueda me indica cuales registros de una tabla contienen lo que yo ando buscando, pero estos registros son documentos guardados como Objetos con mucho texto y lo que yo necesito es mostrar al usuario, en que parte del Documento esta el resultado de la busqueda, remarcandolo con otro color o con otro Font o con algo que los ayude a hacer su tarea un poco mas facil.

Alguna idea????
Alguien ha hecho algo parecido???
Cualquier ayuda es bienvenida.
Muchas gracias.

Aqui va la parte del codigo que estoy utilizando:

my $sth = $m->prepare("SELECT llave,fechagrab,tipo,documentname,version,document o FROM DocsDetail where MATCH(documento,documentname) AGAINST(' $pat ') ");
$sth->execute();
print "<B><H4><U>Documentos que contienen tu palabra de busqueda:</U> <I>$pat</I> </H4></B>";
print "<table border='4'>\n";
print "<tr><th>Folder</th><th>Fecha</th><th>Tipo</th><th>Documento</th><th>Version</th><th>Ref.</th></tr>";
while (@doc = $sth->fetchrow_array)
{
print "<tr><td>$doc[0]</td>";
print "<td>$doc[1]</td>";
print "<td>$doc[2]</td>";
print "<td>$doc[3]</td>";
print "<td>$doc[4]</td>";
print "<td><a href = imagen.pl?id=$doc[0]&nombre=$doc[3]&version=$doc[4]>$doc[3] </a></td></tr>";
}
print "</table>\n";

print button(-name=>'back', -value=>'Atras', -onClick=>'history.go(-1)');


Aqui la variable $pat es mi palabra de busqueda que viene de un programa anterior.

Un ejemplo de los resultados que me muestra con $pat = "operating system"
seria:

Documentos que contienen tu palabra de busqueda: operating system
Folder Fecha Tipo Documento Version Ref.
Rosita 2007-11-15 text/plain blob.htm 1 blob.htm
Rafael 2007-11-15 text/plain blob.htm 1 blob.htm
Rafael 2007-11-15 text/plain blob.htm 1.1 blob.htm

Espero que sirva de ayuda.
Gracias nuevamente.

Negrazo
  #2 (permalink)  
Antiguo 18/11/2007, 13:19
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Re: Busquedas de informacion

Trasladado de BD a Perl. Favor no poner código de programación en BD.

Función de la sección de Base de Datos
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #3 (permalink)  
Antiguo 19/11/2007, 06:36
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 3 meses
Puntos: 90
Re: Busquedas de informacion

Cual es la duda...Porque lo que haces es correcto, buscas en la base de datos lo que contenga la palabra y luego lo imprimes en HTML, no sabes como mostrarlo en color ? pues usa el tag <font> de html

Saludos
__________________
Esteban Quintana
  #4 (permalink)  
Antiguo 19/11/2007, 16:08
Colaborador
 
Fecha de Ingreso: mayo-2006
Ubicación: Valladolid
Mensajes: 524
Antigüedad: 18 años
Puntos: 11
Re: Busquedas de informacion

En $doc[5] tienes el documento entero.

Deberías recorrerlo (supongo que será un array de líneas, si es texto, como pone por ejemplo text/plain), y pintar las líneas en las que coincide con el $pat, remarcándolas, por ejemplo, en rojo:

Código:
foreach ( split "\n", $doc[5] ) {
    if ( s/$pat/<font color="red">$pat<\/font>/g ) {
        print ;
    }
}
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:39.