Sunteți pe pagina 1din 4

Universidad Tecnolgica de la Mixteca

Instituto de Computacin

Recuperacin de la Informacin

Recuperacin de informacin en una base de datos

Mendoza Rivera Lorenzo


Daz Duran Jorge
Cruz Cruz Marcos Antonio

6o Ingeniera En Computacin

Huajuapan de Len, Oaxaca, Oaxaca - June 29, 2016


1 Manual tcnico
Este programa hace una bsqueda dentro de archivos html. El programa empieza haciendo un parsing a los
archivos html para quitar todas las etiquetas y dejar solamente el texto. Para cada archivo html se genera
un archivo de texto plano. Para realizar la bsqueda, la informacin se guarda en una base de datos y luego
se hace la consulta en esta base de datos.

Lo primero que se le muestra al usuario al entrar a la pgina es un formulario, el cual est desde la pgina
index.html y se define como sigue:
<form a c t i o n=" busquedaHTML . php " method=" p o s t " en cty p e=" m u l t i p a r t / formdata ">
<d i v c l a s s=" formgroup ">
<p c l a s s=" b u s ca d o r ">Buscador de p a l a b r a s </p>
<i n p u t ty p e=" t e x t " c l a s s=" formc o n t r o l " i d=" e n t r a d a "
p l a c e h o l d e r=" I n t r o d u c e tu p a l a b r a "
name=" p a l a b r a s " onchange=" miFuncion ( t h i s . form ) ">
</div >
<d i v i d=" s u b i r ">
<i n p u t ty p e=" submit " c l a s s=" btn btnprimary " v a l u e=" Buscar " i d=" a r c h i v o " >
</div >
</form>

Es un simple formulario que muestra una entrada de texto y un botn para enviar. Se hace uso del
mtodo post.

El programa empieza definiendo varia variables globales, mismas que se utilizaran durante todo el pro-
grama. Adems al inicio se incluy una librera la cual har el parse para eliminar todas las etiquetas html
que est en cada una de las paginas html:
i n c l u d e _ o n c e simple_html_dom . php ;

PHP Simple HTML DOM Parser, es una librera de cdigo abierto que se puede descargar desde la sigu-
iente pgina: http://sourceforge.net/projects/simplehtmldom/files.

Ya que se hizo el parse, lo que hicimos a continuacin fue agregar a la base de datos todas las palabras
y a partir de ella se harn las respectivas consultas. Lo primero que hacemos es leer la consulta desde el
formulario y mediante la funcin limpiar eliminamos todos los caracteres acentos y smbolos raros.

La funcin que realiza todos los clculos y donde se lleva a cabo la consulta esta en calcular_resultados(
$consulta ), la cual se describe a continuacin:

La funcin recibe como parmetro un vector de cadenas con la consulta. A continuacin conectamos a la
base de datos que esta alojada en nuestro servidor web, la cual se hace mediante el siguiente cdigo:

$ c o n e x i o n = m y s q l i _ co n n ect ( mysql . h o s t i n g e r . e s , u 8 2 0 0 4 1 5 5 3 _ l o r e , l o r e n z o ) ;
i f ( ! $conexion )
{
echo " e r r o r " ;
exit () ;
}
m y s q l i _ s el ect_ d b ( $ co n ex i o n , u820041553_bdl ) o r d i e
( " e r r o r en l a c o n e x i o n " . m y s q l i _ e r r o r ( $ c o n e x i o n ) ) ;

2
Como se puede apreciar, primero nos aseguramos de hacer la conexin, en caso de que no se tenga xito,
mandamos un mensaje de error, en otro caso seleccionamos la base de datos con la cual vamos a trabajar.
Ahora el siguiente ciclo recorre la el vector consulta y busca cada consulta en la base de datos y si hay al
menos una coincidencia entonces guarda el documento donde esta esa palabra.

f o r ( $ i = 0 ; $ i < co u n t ( $ c o n s u l t a ) ; ++$ i )
{
$estados [ $i ] = 0;
i f ( $ c o n s u l t a [ $ i ] != "+" )
{
// S i hay una p a l a b r a en c u a l q u i e r a de l o s a r c h i v o s e n t o n c e s s e guarda v e r d a d e r o
$ i n d ex = 0 ;
// Empezar l a s b u s q u e da s en l a b a s e de d a t o s
$search = $consulta [ $i ] ;
$ r e s u l t = mysqli_query ( $ co n ex i o n , "SELECT FROM d a t o s WHEREPALABRA= $ s e a r c h " ) ;
$ e x t r a i d o = mysqli_fetch_row ( $ r e s u l t ) ;
// S i hubo a l menos una c o n s u l t a
i f ( $extraido )
$n = 1 ;
else
$n = 0 ;
while ( $ e x t r a i d o )
{
$documentos = $documentos . $ e x t r a i d o [ 2 ] . " , " ;
$ e x t r a i d o = mysqli_fetch_row ( $ r e s u l t ) ;
}

i f ( $n != 0 )
{
$estados [ $i ] = 1;
}
}

En el ciclo anterior, se recuperan todos los documentos en donde esta la consulta, en otro caso no se
hace nada. A continuacin comprobamos que en la consulta no aparezca el signo "+", en caso de que no sea
entonces se procede a guardar los documentos si hubo apariciones:

i f ( $ c o n s u l t a [ $ i ] != "+" )
{
$ a u x i l i a r = e x p l o d e ( " , " , $documentos ) ;
i n ic ia r () ;
f o r ( $ j = 0 ; $ j < co u n t ( $ a u x i l i a r ) 1 ; ++$ j )
$estados2 [ $ au xi l i ar [ $j ] ] = 1;
f o r ( $ j = 0 ; $ j < 1 0 ; ++$ j )
{
$a = " h " . $ j . " . html " ;
$ e s t a d o s 3 [ $ i n ] [ $ j ] = $ e s t a d o s 2 [ $a ] ;
}
$ i n ++;
}

Y al final hacemos los clculos para el AND o el OR respectivos para la consulta y se guara en un
vector de tamao 10, y se retorna este vector. El cual guarda en el ndice 0 el documento h0.html, en el
ndice 1 el documento h1.html y as sucesivamente y para imprimir los resultados consultamos solo este vector.

El vector de apariciones de la consulta se guarda como una fila de una matriz y es a partir de esta que

3
hacemos los clculos. La condicin anterior son las ultimas lineas del ciclo que recorre la cadena consulta.
Ahora la matriz de apariciones guarda en cada fila de tamao 10 un 1 si en cada indice hubo una aparicin,
en otro caso guarda un 0.

f o r ( $ i = 1 ; $ i < $ i n ; ++$ i )
{
i f ( $ c o n s u l t a [ $ i n 2 ] == "+" )
{
$bandera = 1 ;
$ i n 2 ++;
}
i f ( $bandera == 1 )
{
f o r ( $ j = 0 ; $ j < 1 0 ; ++$ j )
{
$ b l = $ v e c t o r [ $ j ] && $estados3 [ $i ][ $j ];
i f ( $bl )
$vector [ $j ] = 1;
else
$vector [ $j ] = 0;
$bandera = 0 ;
}
}
else
{
f o r ( $ j = 0 ; $ j < 1 0 ; ++$ j )
{
$bl = $vector [ $j ] | | $estados3 [ $i ][ $j ];
i f ( $bl )
$vector [ $j ] = 1;
else
$vector [ $j ] = 0;
}
}
$ i n 2 ++;
}

Finalmente retornamos la variable $vector, que es el que guarda los documentos con de la consulta dada
y esta es la que utilizamos para desplegar los resultados al usuario. La relacin que guarda el vector ya se
comento anteriormente.

S-ar putea să vă placă și