Sphinx es un motor de búsqueda abierto diseñado con el fin de indexar contenidos de bases de datos. Nos permite que las búsquedas sean mucho más rápidas gracias a la indexación de contenido y de esta forma hacer buscadores optimizados para grandes cantidades de usuarios.
Veamos como instalar Sphinx Search Engine en Ubuntu.
Instalar Sphinx es muy sencillo, en primer lugar añadimos el repositorio:
add-apt-repository ppa:builds/sphinxsearch-daily
Actualizamos los repositorios:
aptitude update
Instalamos Sphinx:
aptitude install sphinxsearch
Los ficheros que configuraremos están en /etc/sphinxsearch
cd /etc/sphinxsearch
Ahora crearemos la base de datos de prueba que viene con Sphinx para probar su funcionamiento:
mysql -u root –p CREATE DATABASE test; exit mysql -u root -p < example.sql
El siguiente paso es crear el fichero de configuración principal de Sphinx, copiamos el que viene por defecto con el nombre sphinx.conf:
cp sphinx-min.conf.dist sphinx.conf nano sphinx.conf
Lo editamos con nano por ejemplo y lo dejamos de la siguiente manera:
source src1 { # Configuración base de datos type = mysql sql_host = localhost sql_user = root sql_pass = password sql_db = test sql_port = 3306 # optional, default is 3306 # Consulta principal que trae todos los registros sql_query = \ SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content \ FROM documents sql_attr_uint = group_id sql_attr_timestamp = date_added sql_query_info = SELECT * FROM documents WHERE id=$id } index test1 { source = src1 path = /var/lib/sphinxsearch/data/test1 docinfo = extern charset_type = sbcs } index testrt { type = rt rt_mem_limit = 32M path = /var/lib/sphinxsearch/data/testrt charset_type = utf-8 rt_field = title rt_field = content rt_attr_uint = gid } indexer { mem_limit = 32M } searchd { listen = 9312 listen = 9306:mysql41 log = /var/log/sphinxsearch/searchd.log query_log = /var/log/sphinxsearch/query.log read_timeout = 5 max_children = 30 pid_file = /var/run/sphinxsearch/searchd.pid max_matches = 1000 seamless_rotate = 1 preopen_indexes = 1 unlink_old = 1 workers = threads # for RT to work binlog_path = /var/lib/sphinxsearch/data }
Ahora lo que haremos es indexar los resultados de la base de datos, ejecutando el comando:
indexer --config /etc/sphinxsearch/sphinx.conf --all
Ahora comprobamos que las búsquedas funcionan correctamente, con el comando:
search --config /etc/sphinxsearch/sphinx.conf one two document
También tenemos disponible el servicio sphinxsearch que podemos parar, iniciar o reiniciar.
Ahora ya tenemos listo Sphinx para hacer un buscador utilizando su API en PHP por ejemplo.
Más información:
Sphinx Search Sitio oficial
Rebuilding Sphinx Index
Does Sphinx auto update is index when you add data to your sql
Busquedas Full Text con esteroides
indexar las busquedas full text con sphinx tutorial como usar sphinx/