Mostrando entradas con la etiqueta programación. Mostrar todas las entradas
Mostrando entradas con la etiqueta programación. Mostrar todas las entradas

19 mayo 2009

Entendiendo el nuevo buscador de sitios ( y el resto de datos de dilogs)

Estoy desarrollando un nuevo buscador.
No se base en el mapa sino en los resultado, interpretando la búsqueda y el resultado de cada uno de los usuarios que hayan hecho una búsqueda alguna vez.

La idea no era hacer un buscador normal, que filtre por un where o like y poco cosa mas. No. De hecho hace tiempo que vengo desarrollando la idea y ya era hora que la pusiera en practica.

Intentaré explicarlo fácilmente.
El sistema indexa, por ejemplo, los sitios de buceo. El buscador se basa en ese indice y en la descripción buscada. Ademas de esto, busca en la base de datos de búsquedas anteriores e intenta saber que resultado ( referido a un registro ) es el mas apropiado para el usuario y la descripción buscada.
Dará un resultado mas preciso porque aprende de la acción de los usuarios.

Otra funcionalidad añadida es que si existen resultados mejores con una palabra similar, ofrecerá al usuario la nueva descripción. Al estilo "Quizás deseas buscar NNN".

De momento el buscador no es publico. Intentaré publicarlo lo antes posible pero quiero mejorarlo e incorporar usuarios, organizaciones, contenidos y alguna otra cosa, y para ello tengo que generar los índices correctos.


Mas optimizaciones
Estos últimos días he estado trabajando en mejorar la velocidad de carga y consultas a la base de datos.
He logrado muchas mejoras, trabajando con los índices de las tablas y tuneando las consultas que las utilizaban.
También he tocado un poco la conflagración del servicio de mysql y he notado alguna mejora añadida.
Por ultimo un poco de SEO y optimización web, he mejorado la carga de la aplicación en los navegadores ( con un poco de ayuda de tryke ). Modificando los js y css.

06 febrero 2009

De xhtml, JSON y como pasar variables de PHP a Javascript

Quería compartir una solución que he tenido que encontrar para compartir algunas variables del controlador con javascript.
El problema que tenia inicialmente era que desde javascript (siempre utilizando JQuery) no tenia la información del idioma en que se estaba trabajando ( independientemente del navegador) y algunas otras variables como por ejemplo el centro de un mapa para inicializarlo.

Se me ocurrió la idea de guardar esta información en el mismo header del xhtml para luego capturarla desde JS.

Inicialmente creé en la clase controlador un array y dos métodos para agregar elementos que iría llamando desde cada controlador.
De esta manera iría llenando con las variables desde php cada vez que lo necesitaba, de esta manera:

var $initdata = array();
function setinitdata($key, $value){$initdata[$key]=$value}


Una vez generado el array en el controlador, desde la vista, solo tenia que llamar a otro metodo para que codifique el array en JSON, php 5.2 lo soporta nativamente, aunque ahora mismo estoy utilizando una clase aparte.

Luego, el string json resultante lo guardo en un meta dentro del xhtml de esta manera (esto es solo un ejemplo, en dilogs se guardan mas de una variable, y dependiendo la pagina también se guardan mensajes de texto):

meta id="initdata" content='{controller:{langid:"es"}}'


Desde javascript se accede facilmente a la información de esta manera:

var initdata = null;
$(document).ready(function(){
var json = $("#initdata").attr("content");
eval( 'initdata = ' + json );
});


En JS tendremos en la variable initdata toda la información estructurada que teníamos en la misma variable del controlador en PHP.

Realmente se me ha hecho muy practico y facil de acceder. En algunos casos proceso la informacion en el controllador antes de enviarla al header y de esta manera gano mucho tiempo y seguridad en el cliente.