Todo 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 pegar ;)
apt-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.

Escribe un comentario

Debes registrarte para publicar un comentario. Entrar »