Como usar Google Custom Search Engine (CSE) para buscar contenido relacionado automáticamente

Este excelente tutorial lo encontré en el foro de Supermasita ;)


Como usar Google Custom Search Engine (CSE) para buscar contenido relacionado automáticamente

La idea es sencilla (por no decir, boluda): cada vez que se carga una página, hacemos una busqueda con automática con algún elemento de la misma, para conseguir contenido similar. En este caso, lo usamos para un foro SMF, pero aplica para cualquier cosa.

Anteriormente, estabamos usando el mod RELATED TOPICS, que realmente es muy bueno, pero hay tres cosas que no nos convencián:
1- Usa base de datos
2- Usa base de datos
3- Usa base de datos
;D

Si bien el mod siempre se comportó muy bien, para poder relacionar los posts necesitaba hacer muchas operaciones sobre la base de datos, analizando cada post… muy costoso para la humildad de nuestro sitio. Es así que surge CSE como alternativa :)

Manos a la torta!

Necesitamos nuestros código de CSE, para lo cual tenemos que tener cuenta en Google. Al código recibido, le haremos algunas modificaciones:

* Como ya tengo otra búsqueda en el sitio, tengo que reemplazar el id del div: lo llamo “cse-related” en lugar de “cse”

 <div id="cse-related" style="width: 100%;">Cargando los relacionados del orto...</div> 
customSearchControl.draw("cse-related", options);

* Agrego un parametro con el cual la búsqueda se hará automaticamente y uso una variable de SMF para que le pase el titulo del post (se puede pasar cualquier dato; varia según la aplicacion y lo que quieran hacer)

customSearchControl.execute("', $context['page_title_html_safe'], '"); 

* Como quiero que la búsqueda me devuelva pocos resultados, cambio “FILTERED_CSE_RESULTSET” por “SMALL_RESULTSET”

customSearchControl.setResultSetSize(google.search.Search.SMALL_RESULTSET); 

* ( Adicional SMF ) Como quiero que solo aparezca en el foro “Descargas gratis”, uso un IF para que revise el número del mismo y solo si es él, lo muestre:

if ($context['current_board']==30){ (...) } 

* Código completo

 <div id="cse-related" style="width: 100%;">Cargando los relacionados del orto...</div> <script src="http://www.google.com/jsapi" type="text/javascript"></script> <script type="text/javascript">   google.load("search", "1", {language : "es" });   var _gaq = _gaq || [];   _gaq.push(["_setAccount", "UA-20304174-3"]); // ESTE NRO CORRESPONDE A TU CUENTA DE GA - USA EL TUYO   function _trackQuery(control, searcher, query) { var gaQueryParamName = "q"; var loc = document.location; var url = [ loc.pathname, loc.search, loc.search ? "&" : "?", gaQueryParamName == "" ? "q" : encodeURIComponent(gaQueryParamName), "=", encodeURIComponent(query) ].join(""); _gaq.push(["_trackPageview", url]);   }   google.setOnLoadCallback(function() { var customSearchControl = new google.search.CustomSearchControl("011362303405070467126:ac8zmrxz1qq"); // ESTE NRO ES UNICO POR BUSCADOR - USA EL TUYO customSearchControl.setResultSetSize(google.search.Search.SMALL_RESULTSET); customSearchControl.setSearchStartingCallback(null, _trackQuery); var options = new google.search.DrawOptions(); options.setAutoComplete(false); customSearchControl.draw("cse-related", options); customSearchControl.execute("', $context['page_title_html_safe'], '");   }, true); </script> 

8) Pueden ver este  post como ejemplo.

Cosas a favor y en contra

PRO:
* No usamos la base de datos
* No ejecutamos PHP (salvo el IF)
* La carga es asincronica (primero se carga el sitio y después los relacacionados; eso equivale a mejor experiencia para el usuario)
* No usamos los recursos del sitio, sino los de CSE

CON:
* Tenemos que esperar a que un post este en el índice de Google para que se pueda relacionar
* La relación puede mejorarse
* Si muere CSE, mueren los relacionados (como cualquier recurso fuera de nuestro dominio)

Para hacer
* Mejorar el párametro de la búsqueda, usando otras variables o combinaciones de varias

Extra
Este post me sirvió para armar esto (en inglés): http://www.binaryturf.com/add-related-posts-widget-google-cse-retain-engage-visitors/

2 responses to “Como usar Google Custom Search Engine (CSE) para buscar contenido relacionado automáticamente

  1. johnny

    Muy buen artículo. Tengo una pregunta? Tiene alguna limitación en el número de consultas? Por ejemplo se podría usar CSE para que alguien que ingrese por ejemplo una palabra, por decir algo ‘alegría’, muestre en la consulta blogs que hablen de alegría? Gracias

    • rofc

      Johnny, la verdad que no lo pensé de esa forma. Estoy seguro que la cantidad de GETs se verá limitado por el uso normal del buscador de Google. Saludos!

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>