Emilio Zapata

Posts Tagged ‘MySql’

Andrade Propiedades ¿quieres ver otros proyectos?

In Andrade Propiedades on noviembre 30, 2012 at 12:56 am

Pasos a seguir para la creación de un buscador con PHP y MySQL. 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. 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 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);

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.

 

Minibuscador php Andrade Propiedades NeoRod

Busca un texto, dentro de archivos de un directorio web, y lista los resultados con algun contenido del archivo.

<html xmlns=”http://www.w3.org/1999/xhtml”&gt;
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″ />
<title>by NeoRod</title>
</head>
<body>
<h1>Minibuscador php de NeoRod</h1>
<p>Busca un texto, dentro de archivos de un directorio web, y lista los resultados con algun contenido del archivo. </p>
<form id=”form1″ name=”form1″ method=”get”>
Buscar Texto en pagina<input type=”text” name=”q”/>
<input type=”submit” value=”Buscar” />
</form>
<p>
<?php

$dir = “../colegio”; //colocas la carpeta donde va a buscar los temas
$directorio= @opendir($dir);
if(@opendir($dir)==TRUE)
{
$i=0;
while ($archivo = readdir($directorio))
{
if($archivo != ‘.’)
{
if(!is_dir(“$dir/$archivo”))
{
$neo[$i]=$archivo;
$i++;}
}

}
closedir($directorio);
if($_GET[“q”]!=””)
{
for($j=0;$j<count($neo);$j++)
{
$archivo=$neo[$j];
$fp = fopen($archivo,’r’);
//leemos el archivo
$texto = fread($fp, filesize($archivo));

if(eregi($_GET[“q”],$texto)==1)
{
$lugar=strpos($texto,”<p>”);
echo $prueba;
echo “<p><a href=$archivo>$archivo</a><br>”;
echo substr($texto, $lugar, 200);
}
}
}
}
else
echo “no puede abrirse el directorio o no existe<br>”
?>
</p>
<p>Atte. NeoRod </p>
</body>
</html>

Contacta con Andrade Propiedades

 

Mientras ponemos online a Andrade Propiedades quieres ver otros proyectos:

likes! | Arts | Inmobiliaria | indenxen | la sede | Nosotros | drome

Anuncios

MySql para Andrade Propiedades 3D

In Mysql on octubre 30, 2012 at 12:45 am

MySql para Andrade Propiedades 3D

likes! | Arts | Inmobiliaria | indenxen | la sede | Nosotros | drome

Hace mucho que no hago un post para programadores, pero hoy vuelvo y con un poco de SQL que muchos no tienen tan claro…
Para el que le interese hacer un buscador en MySQL hay una herramienta que tienen en todos sus MySQL y que pocos usan.
La maldita costumbre del “Like” hace que se olviden de usar índices y full text search, acá les dejo un poco como es la idea. Si tenemos una tabla con nuestras noticias donde hay un título y un cuerpo principal de la nota, titulo y cuerpo, primero hay que asegurarse que sean Varchar o TEXT , no usar BLOB para esto, no sirve. Luego hay que crear el índice:
ALTER TABLE notas ADD FULLTEXT(titulo, cuerpo);

ahí se crea el índice para la búsqueda, esto puede ocupar un poco más de espacio pero lo importante se ve en el resultado de la búsqueda. Más rápida y eficiente que un Like, simplemente funciona como un buscador y no como una comparación sencilla y costosa como el like. Buscamos así:
SELECT * FROM notas
WHERE MATCH(titulo, cuerpo) AGAINST (‘Paleta’)

donde ‘Paleta’ es nuestra palabra de búsqueda nos podrá traer inclusive frases o más de una palabra (el like se muere si le hacen eso)

Pero si además quieren ordenarlo por “rating” u orden de importancia de la búsqueda:
SELECT * , MATCH(titulo, cuerpo) AGAINST (‘Paleta’) as Score
FROM notas
WHERE MATCH(titulo, cuerpo) AGAINST (‘Paleta’)
ORDER BY Score DESC


(obviamente nunca usen *, ahí pongan los campos que van a usar)

Score tiene un valor que no se bien como se calcula pero nos da un orden coherente de lo que se encontró tal cual hacen algunos buscadores que imprimen un porcentaje o un valor de “acierto”

Inconvenientes:

El límite de búsqueda está configurado en el MySQL y por lo general es de 4 caracteres, así que si quieren buscar algo simple como… PHP! no lo van a poder encontrar y no va a emitir ningún resultado. Sucede eso con las búsquedas demasiado simples que resulten en un 50% de las posibilidades de encontrar, directamente da resultado nulo. Así que ese es el único detalle en contra pero a favor que busca muy rápido y más eficientemente además de que el resultado es el que queríamos.

andrade propiedadesSETH-GROUP CORP. fundada en 2006 con el fin de utilizar las últimas tecnologias para Diseñar sitios de internet, grafica publicitaria y artística con fines comerciales o bien, personales. Su trabajo se extendió casi de inmediato a la compaginación y armado de libros (impresos – e-book) y cds interactivos, diseñando así mismo las tapas, los interiores, siempre teniendo como referencias las publicaciones internacionales.
SETH-GROUP CORP. ha logrado en muy poco tiempo alcanzar un status de calidad internacional, pero considerando siempre precios accesibles.
Ese es el standard de SETH-GROUP CORP. Calidad Internacional, seguimiento personalizado de cada trabajo y un costo final accesible.

 

 

nuevo Andrade Propiedades