Home > General > Django Haystack + Xapian en Dreamhost

Django Haystack + Xapian en Dreamhost

enero 13, 2011

Casi me saco un ojo instalando Xapian en Dreamhost. Lo necesito para usarlo como máquina de búsqueda Haystack en un sitio Django que estoy haciendo (Ya casi les digo cuál, je je).

Haystack es una aplicación Django (un componente) que trae todo listo para hacer un buscador. Solo es cuestión de configurarlo, cambiar unas cuantas plantillas HTML y el buscador queda listo. Y Xapian es la máquina de búsqueda que hace todo el trabajo. Con Haystack tambien se puede usar Solr y Whoosh pero por desempeño me decidí por Xapian.

Me tocó probar muchas versiones y bajar un paquete adicional para poder compilar Xapian. Para documentar el proceso, y por si a alguien le puede servir, aquí están los pasos que tuve que realizar:

NOTA: Yo estoy usando un Python 2.7 que compilé e instalé en el mismo servidor. Todo está en ~/local/ así que si necesitan instalar en otro directorio tendrán que modificar las rutas en los comandos.

Instalar Haystack es fácil. Solo es cuestión de instalar estos dos paquetes:

easy_install http://pypi.python.org/packages/source/d/django-haystack/django-haystack-1.1.0.tar.gz
easy_install http://pypi.python.org/packages/source/x/xapian-haystack/xapian-haystack-1.1.5beta.tar.gz

Esas son las únicas versiones que me funcionaron. Todas las demás combinaciones que probé me dieron errores al crear el índice.

Xapian es más difícil. Primero hay que instalar util-linux-ng y no funciona cualquier versión. La única que no me dio problemas fue la 2.16 (y las probé casi todas):

cd ~/installers
wget ftp://ftp.kernel.org/pub/linux/utils/util-linux/v2.16/util-linux-ng-2.16.tar.gz
tar -xzf util-linux-ng-2.16.tar.gz
cd util-linux-ng-2.16
nice ./configure --prefix=$HOME/local
nice make
nice make install

Ignoren los errores de chgrp que salen al hace el make install. Ahora sí, instalemos xapian-core:

cd ~/installers
wget http://oligarchy.co.uk/xapian/1.2.4/xapian-core-1.2.4.tar.gz
tar -xzf xapian-core-1.2.4.tar.gz
cd xapian-core-1.2.4
nice ./configure --prefix=$HOME/local CPPFLAGS="-I$HOME/local/include" LDFLAGS="-L$HOME/local/lib"
nice make
nice make install

CPPFLAGS y LDFLAGS son necesarios para que encuentre las cabeceras y la biblioteca que instalamos con util-linux-ng. Ahora necesitamos xapian-bindings:

cd ~/installers
wget http://oligarchy.co.uk/xapian/1.2.4/xapian-bindings-1.2.4.tar.gz
tar -xzf xapian-bindings-1.2.4.tar.gz
cd xapian-bindings-1.2.4
nice ./configure --prefix=$HOME/local CPPFLAGS="-I$HOME/local/include" LDFLAGS="-L$HOME/local/lib" XAPIAN_CONFIG=$HOME/local/bin/xapian-config --without-php --without-ruby --without-java --without-csharp --without-tcl --with-python
nice make
nice make install

Listo, ahora solo es cuestión de seguir las instrucciones del tutorial de Haystack.

PD: En Windows es mucho más sencillo porque se pueden bajar los binarios pre-compilados aunque dan uno que otro error. No les recomiendo que lo usen para producción pero para desarrollo funciona. Para instalar todo solo hay que ejecutar estos comandos:

easy_install http://pypi.python.org/packages/source/d/django-haystack/django-haystack-1.1.0.tar.gz
easy_install http://pypi.python.org/packages/source/x/xapian-haystack/xapian-haystack-1.1.5beta.tar.gz

Y luego bajar este instalador y correrlo como administrador:
http://www.flax.co.uk/xapian/124/xapian-python-bindings%20for%20Python%202.7.0%20-1.2.4.win32.exe

Para crear el índice manage.py rebuild_index me da un error todo raro pero manage.py update_index funciona sin problemas.

Categories: General Tags: , , , ,