Buscando en un cachito de internet con mnogosearch
Publicado por: javier en Administración de sistemas, Consultoría, tags: buscador, indexador, mnogosearchTodo era tan bonito, que resultó ser mentira
Motivación
Hemos estado usando la api soap de google para hacer las búsquedas dentro de gloobal.net, pero Google ha decidido dejar de dar soporte a esto desde Agosto de 2009, así que hemos tenido que buscarnos para seguir dando el servicio de otra forma. Como después de la experiencia nos hemos dejado de fiar de google un poco, por lo que hemos decidido usar mnogosearch para hacer esto, por aquello de apropiarnos de la tecnología.
Instalación
Partimos de una Debian Etch limpia recien sacada de la caja.
La versión de mnogosearch que viene con debian (etch) está obsoleta, por lo que se ha tenido que instalar desde los fuentes.
Compilando mnogosearch
Son unos pasos bastante sencillos los que hay que seguir,
ssh root@buscador root@buscador's password: buscador:~# # de aqui en adelante quitaré esto para que sea más fácil copiar y pegarapt-get update apt-get upgrade apt-get install make gcc less vim mysql-server libmysql++-dev cd /usr/src/ wget http://www.mnogosearch.org/Download/mnogosearch-3.3.8.tar.gz # pudes buscar algo más moderno tar xzvf mnogosearch-3.3.8.tar.gz cd mnogosearch-3.3.8 perl install.pl # a las preguntas, todas por defecto menos Build shared libraries? (yes/no) [no]: yes make make install
Aqui ya estaría instalado el mnogosearch.
Compilando el módulo PHP en debian
Es importante hacer este paso después de haber instalado mnogosearch desde los fuentes.
cd /usr/src apt-get install libapache2-mod-php5 apt-get build-dep php5 apt-get source php5 cd php5-5.2.6.dfsg.1/ # puede cambiar dependiendo de la versión de php ./debian/rules patch cp -a ../mnogosearch-3.3.8/php ext/mnogosearc vim debian/rules # busca donde estan todos los --with y en medio pon --with-mnogosearch=shared,/usr/local/mnogosearch \ echo mnogosearch mnoGoSearch >> debian/modulelist mkdir -p debian/php5-mnogosearch/usr/share/doc/php5-mnogosearch ./debian/rules binary #espera sentao cp apache2-build/modules/mnogosearch.so /usr/lib/php5/20060613/ echo extension=mnogosearch.so > /etc/php5/conf.d/mnogosearch.ini /etc/init.d/apache2 restart
Con esto ya está instalado todo el software necesario, ahora hay que configurarlo y echarlo a rodar.
Configuración
indexer.conf
La idea es ver la documentación sobre el fichero para saber lo que se está haciendo, pero aqui va lo más importante (cambiado) ojo este fichero no sería funcional:
DBAddr mysql://buscador:buscando@localhost/buscador/?dbmode=blob&Deflate=yes&zint4=yes LocalCharset ISO-8859-1 StopwordFile stopwords/es.sl HTTPHeader "User-Agent: Gloobal Crawler 0.3" Disallow *html=1 Disallow *printview* DefaultLang es DetectClones yes Server skip http://miweb/zonaoscura Period 7d Server http://miweb/ Period 1y Server http://miweb/que_no_seactualiza/ Period 1h Server HrefOnly http://miweb/novedades
La base de datos
Espero que hayas puesto contraseña a la base de datos en la instalación
mysql -u root -p create database buscador DEFAULT CHARACTER SET latin1 COLLATE latin1_spanish_ci; grant all privileges on buscador.* to "buscador"@"localhost" IDENTIFIED by "buscando"; \q /usr/local/mnogosearch/sbin/indexer -Ecreate
Con esto la base de datos está creada y compuesta, solo le falta ser rellenada.
El sistema
Para que la base de datos se rellene hay que correr períodicamente el indexer, en nuestro caso hemos estado haciendo pruebas para ver la frecuencia con la que cambia la información de nuestras páginas y hemos determinado que cada media hora hay cambios suficientes como para que venga bien buscar enlaces nuevos, por lo que cada 30 minutos lanzamos el indexador con 1 hilo para que recoja 1000 páginas. Cada día a las 21h lanzamos dos hilos para que indexen todo lo viejo que esté caducado o nuevo que no esté indexado.
Cada dos horas lanzamos el proceso para convertir a blob la base de datos. Esto es necesario y bastante largo, afinarlo y tened en cuenta que las páginas indexadas no empiezan a aparecer hasta que esto no se ha lanzado.
Simplemente añadimos al /etc/crontab lo siguiente:
30 * * * * root /usr/local/mnogosearch/sbin/indexer -N 1 -n 1000 > /dev/null 2>/dev/null 00 21 * * * root /usr/local/mnogosearch/sbin/indexer -N 2 > /dev/null 2>/dev/null 20 */2 * * * root (/usr/local/mnogosearch/sbin/indexer -Eblob ; /bin/rm -f /usr/local/mnoGoSearch/var/cache/*) > /dev/null 2>/dev/null
y casi siempre hay que cambiar esto en el /etc/php5/apache2/php.ini
register_globals = On
Con esto ya tendríamos el indexador recogiendo información, Nos falta hacer algo en php con lo que hacer las búsquedas… En el próximo número.
Entradas (RSS)