A tomar por… o yet another search engine

Con un cabreo monumental hice un cambio drástico, deseché el “nuevo buscador” basado en Zend Lucene y lo reimplementé en Sphinx. Por ahora funciona todo igual salvo las operaciones booleanas que ya implementaré estos días (con mejoras).

El Zend Lucene tenía muchos problemas: mucho consumo de memoria –hasta centenares de megas por cada consulta–, por lo que hay que limitar los resultados que ordena, muy lento, falla el sistema de locking cuando se actualizan varios artículos concurrentemente, problemas con las tablas de conversión UTF-8. Además de ello hay que reconocer que indexar textos tan cortos tiene sus problemas.

Perdí más de una semana tocando el Lucene y creando nuevas clases, pero cuando solucionaba un problema surgían dos más.

Hoy Ayer con el cabreo me puse a estudiar el Sphinx, y salvo que tuve que haer la tabla de conversión de caracteres españoles y catalanes, lo demás funcionó como una seda. Además el servidor lo tenemos en marcha en el servidor de backup, así que ni siquiera va a molestar al principal aunque tenga fallos graves.

Otra de las ventajas del Sphinx es que se pueden enviar “colas de consultas”, por lo que para búsquedas de varias palabras se hace el ordenamiento por varios criterios, prima el de de la frase completa, luego con contenga todas las palabras buscadas y finalmente cualquiera de ellas. En las dos primeras consultas se ordena por fecha –lo que soluciona una parte importante del problema del menéame, encontrar los “dupes” recientes– y la última consulta ordena por relevancia/frecuencia. Estas preferencias por frases largas versus por fecha para menos palabras se nota en menéame es un saco y menéame saco (en el primera consulta sale en primera posición, en la segunda sale en sexta posición).

Ya iremos afinando, pero con las cientos de pruebas que hice (con ayuda de algunos que estaban por la fisgona) parece dar muchos mejores resultados, y la diferencia de velocidad y tiempo de respuesta es muy notable. Demasiada diferencia como para seguir con el anterior un día más.

About these ads

10 pensamientos en “A tomar por… o yet another search engine

  1. Pingback: meneame.net

  2. Pingback: www.teknear.com

  3. Solomon

    ¿Valorasteis el utilizar la versión en java de lucene? o incluso mejor aun, SOLR, que ofrece una capa de abstraccion por encima de lucene y ademas permite ver el estado y mantener el indice. No se en este aspecto que tal se comportara sphinx, pero al menos la version java de lucene esta mas que probada.

    De todas formas, si ya os funciona bien, mejor no tocarlo :D

    Responder
  4. UnoDeTantos

    Por un comentario de un usuario de meneame dentro del meneo de este articulo pidiendo un plugin de búsqueda para firefox, os dejo aquí esto por si os interesa:

    Si meneame pone esto en su función do_header (en html1.php)

    echo ”;

    Y despues crea el archivo buscador_firefox.xml de esta forma:

    Meneame
    Noticias 2.0
    UTF-8
    http://meneame.net/img/favicons/favicon4.ico

    http://meneame.net

    A todos los que naveguen con firefox les saldrá en la parte de buscadores (arriba a la derecha en el navegador) un enlace que les permitirá incluir meneame dentro de la lista, pudiendo hacer las búsquedas desde ahí sin ningún tipo de plugin.

    Espero que sea de vuestro interes.

    Sobre la noticia, solo una cosa… hace algún tiempo probé el sphinx y realmente es una maravilla, pero ¿como lo habéis implementado al final? Lo pregunto porque vi un par de formas… una tirando de mysql y otra generando el indice entero una sola vez y generando lo nuevo al vuelo (porque son pocos datos y se puede hacer) para después, cada X tiempo regenerarlo por completo… si lo habéis hecho con mysql, os recomiendo la segunda forma… hay una GRAN diferencia ;)

    Responder
  5. Pingback: Sphinx search. Para cuando MySQL se te queda corto | Autoempleo, sólo vivir de Internet

Deja un comentario

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s