Avatar Image
Machacateclados
Machacateclados

como instalo el buscador PHP y MySQL, no se mucho sobre codigos, me puede ayudar algien.




En este artículo voy a explicar como se puede hacer un buscador basado en MySQL y PHP. Supongo al lector
familiarizado con la programación en PHP y la administración básica de MySQL.

Como punto de partida, la información a buscar la tenemos que tener almacenada en una tabla de nuestra
base de datos. Pongamos como ejemplo una tabla con artículos técnicos que llamaremos ARTICULOS. Esta tabla
ARTICULOS tendrá como mínimo dos campos llamados TITULO y DESARROLLO, que almacenarán el título del
artículo y su contenido respectivamente.
Campos de la tabla

Los tipos de los campos a buscar deberán ser CHAR, VARCHAR o TEXT con sus variantes.

Ahora diseñaremos una página con un formulario y una caja de texto para escribir la cadena de consulta
busqueda y llamar al script de búsqueda buscar.php. Ejemplo:

<FORM METHOD=POST ACTION="buscar.php">
Buscar: <INPUT TYPE="text" NAME="busqueda">
</FORM>

En el fichero buscar.php es donde está el click de la cuestión.

Hay que hacer la consulta que busque las palabras y devuelva como resultado los registros coincidentes.
Hasta aquí parece fácil y podríamos resolverlo así:

SELECT * FROM ARTICULOS WHERE DESARROLLO LIKE '%$busqueda%' OR TITULO LIKE '%$busqueda%'

Pues esta consulta nos mostrará todos los artículos que en su titulo o en su contenido aparezca la frase
de búsqueda tal y como nosotros la introducimos. Esto es muy limitado ya que un cambio en el orden de las
palabras o un artículo de separación dará al traste con nuestra búsqueda no mostrando los resultados deseados.

Si bien podríamos depurar y mejorar la sintaxis de nuestra búsqueda utilizando el operador LIKE las
búsquedas resultarían muy lentas y no tendrían el resultado esperado.

La solución mas eficiente es utilizar los índices FULLTEXT específicamente indicados para estos menesteres.
Pues bien esto implica ir a nuestra base de datos, y crear un indice FULLTEXT con todos los campos que
deseamos incluir en nuestra busqueda, que en nuestro caso son TITULO y DESARROLLO. Para ello basta con
el phpmyadmin o bien escribir la instrucción directamente:

ALTER TABLE ARTICULOS ADD FULLTEXT(TITULO, DESARROLLO);

Índices de la tabla

Una vez creado el índice la instrucción SQL para buscar será:

SELECT * FROM ARTICULOS WHERE MATCH(TITULO, DESARROLLO) AGAINST ('$busqueda')

Esta línea utiliza la función MATCH ... AGAINST ... que encuentra el texto buscado, usando consultas en
lenguaje natural parecido a como lo hacen los motores de búsqueda. Además, se calcula internamente una
puntuación en función de como aparecen los términos buscados dentro de nuestro artículo.

Perfeccionando la búsqueda:

SELECT * , MATCH (TITULO,DESARROLLO) AGAINST ('$busqueda') AS puntuacion
FROM ARTICULOS WHERE MATCH (TITULO, DESARROLLO) AGAINST ('$busqueda')
ORDER BY puntuacion DESC LIMIT 50

Esta línea devuelve los 50 primeros resultados encontrados ordenados de mas a menos puntuación. El valor de
la puntuacion es un número decimal comprendido entre 0 y 1 por cada ocurrencia del patrón de búsqueda, que
se irá sumando si ese patrón es encontrado en varias ocasiones. De cualquier forma esta puntuación es un
algoritmo interno de la base de datos.

Algunos problemas. Las búsquedas realizadas con MATCH ...AGAINST en ocasiones fallan cuando el término a
buscar contiene una sola palabra. Por el contrario son unas búsquedas rapidísimas que producen mejores
resultados que otros métodos mas rudimentarios como el LIKE cuando se trata de varias palabras o frases.

La solución que le he dado a ese problema de las búsquedas con MATCH...AGAINST has sido chequear el número
de palabras a buscar, utilizando una búsqueda simple con LIKE en el caso de una sola palabra, y el método
MATCH...AGAINST en el caso de varias.


Ejemplo del fichero buscar.php

<?php
//cadena de conexion
mysql_connect("host","usuario","password" ) ;
// DEBO PREPARAR LOS TEXTOS QUE VOY A BUSCAR si la cadena existe
if ($busqueda<>''){
//CUENTA EL NUMERO DE PALABRAS
$trozos=explode(" ",$busqueda);
$numero=count($trozos);
if ($numero==1) {
//SI SOLO HAY UNA PALABRA DE BUSQUEDA SE ESTABLECE UNA INSTRUCION CON LIKE
$cadbusca="SELECT REFERENCIA, TITULO FROM ARTICULOS WHERE VISIBLE =1
AND DESARROLLO LIKE '%$busqueda%' OR TITULO LIKE '%$busqueda%' LIMIT 50";
} elseif ($numero>1) {
//SI HAY UNA FRASE SE UTILIZA EL ALGORTIMO DE BUSQUEDA AVANZADO DE MATCH AGAINST
//busqueda de frases con mas de una palabra y un algoritmo especializado
$cadbusca="SELECT REFERENCIA, TITULO, MATCH ( TITULO, DESARROLLO )
AGAINST ( '$busqueda' ) AS Score FROM ARTICULOS WHERE
MATCH ( TITULO, DESARROLLO ) AGAINST ( '$busqueda' ) ORDER BY Score DESC LIMIT 50";
}
$result=mysql("teleformacion", $cadbusca);
While($row=mysql_fetch_object($result))
{
//Mostramos los titulos de los articulos o lo que deseemos...
$referencia=$row->REFERENCIA;
$titulo=$row->TITULO;
echo $referencia." - ".$titulo."<br>";
}
}
?>






pagina de referencia http://www.programacion.com/php/articulo/adr_buscador/


Avatar Image
Machacateclados
Machacateclados

como lo instalo porfabor ArdiendoArdiendoArdiendo

Avatar Image
Machacateclados
Machacateclados

escribitme algo, como lo ago para instalarlo en mi web, como lo ago que estoi mui cinjeladoHeladoHeladoHeladoHeladoHeladoHelado
i mui quemado por esto ArdiendoArdiendoArdiendoArdiendoArdiendoArdiendo

Avatar Image
Moderador
Moderador

Has pensado que es muy probable que nadie sepa la respuesta, yo le dí una leida la web que dejas y la verdad quede con más dudas que tu.

Esto se trata de tener paciencia , mucha paciencia .

De interés Público
NO AGREGARME COMO AMIGO, gracias
Asuntos claros en los temas
Consultas en temas no afines serán borradas
Tratemos de expresarnos bien, que así da gusto leer


Avatar Image
Machacateclados
Machacateclados

si que lo e pensado, pero tu no sabes si ai algun foro de eso de prgramadores php

Avatar Image
Moderador
Moderador
Escrito originalmente por CilloKa
si que lo e pensado, pero tu no sabes si ai algun foro de eso de prgramadores php
y crees que te van a responder enseguida, pues has la prueba a mi me gustan los foros del web
De interés Público
NO AGREGARME COMO AMIGO, gracias
Asuntos claros en los temas
Consultas en temas no afines serán borradas
Tratemos de expresarnos bien, que así da gusto leer


hakeadormolina
Usuario Novato
Usuario Novato

amigo me  ayudas con un buscador para una txt  ose me entiede

Avatar Image
Moderador del foro
Moderador del foro
Escrito originalmente por hakeadormolina

amigo me  ayudas con un buscador para una txt  ose me entiede

Si tienes dudas crea un nuevo tema, no revivas uno de 2006 (y explícate mejor para entonces).

Este tema fue cerrado y no se pueden escribir nuevas respuestas
Opciones:
Ir al subforo:
Permisos:
TU NO PUEDES Escribir nuevos temas
TU NO PUEDES Responder a los temas
TU NO PUEDES Editar tus propios mensajes
TU NO PUEDES Borrar tus propios mensajes
Temas similares
TemaUsuariosRespuestasVisitasActividad
Por: , el 17/May/2010, 17:39
jamon33 GestionXls1113kMay/10
Por: , el 24/Ene/2012, 21:58
franciskiko_20 GestionXls12kJan/12
Por: User 6961275, el 07/Sep/2011, 23:52
User 6961275 NoSetup.org chavp GestionXls65kSep/11
Por: , el 21/Jul/2011, 17:20
ermuerto10 Josepepe033103kJul/11
Por: , el 29/Mar/2011, 21:44
anghelo41 NoSetup.org12kMar/11