Sphinx es un servidor de búsqueda de texto completo simple, relevante y de código abierto. Está escrito en lenguaje de programación C++ y funciona con Linux y otros sistemas operativos populares. Este tutorial lo ayudará a instalar y configurar el servidor de búsqueda de texto completo Sphinx en los sistemas operativos Ubuntu 16.04, 14.04 LTS.
Requisitos
Antes de comenzar esta guía, debe tener lo siguiente.
- Servidor Ubuntu con acceso sudo
- Servidor MySQL preinstalado
Paso 1:Instalar Sphinx
Instalar Sphinx en Ubuntu es fácil porque está en el repositorio de paquetes nativo. Instálelo usando el administrador de paquetes apt-get en su sistema Ubuntu.
sudo add-apt-repository ppa:builds/sphinxsearch-rel22 sudo apt-get update sudo apt-get install sphinxsearch
Paso 2:importar la base de datos MySQL
Importemos el archivo SQL de muestra a la base de datos. Primero, cree una base de datos llamada test en su servidor MySQL, luego restaure la base de datos proporcionada por el paquete de búsqueda sphinx.
sudo mysqladmin -u root -p create test sudo mysql -u root -p test < /usr/share/doc/sphinxsearch/example-conf/example.sql
Paso 3:configurar Sphinx
Edite la configuración de Sphinx como se muestra a continuación y edite la configuración de conexión de MySQL como se muestra a continuación.
sudo vi /etc/sphinxsearch/sphinx.conf
source src1 { # data source type. mandatory, no default value # known types are mysql, pgsql, mssql, xmlpipe, xmlpipe2, odbc type = mysql ##################################################################### ## SQL settings (for 'mysql' and 'pgsql' types) ##################################################################### # some straightforward parameters for SQL source types sql_host = localhost sql_user = root sql_pass = secret sql_db = test sql_port = 3306 # optional, default is 3306
Paso 4:Ejecutar el indexador
Ejecute el indexador para crear el índice de texto completo a partir de sus datos. El indexador es la primera de las dos herramientas principales como parte de Sphinx. Funciona para recopilar los datos que se podrán buscar. Verá los resultados como a continuación.
sudo indexer --all Sphinx 2.2.11-id64-release (95ae9a6) Copyright (c) 2001-2016, Andrew Aksyonoff Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com) using config file '/etc/sphinxsearch/sphinx.conf'... indexing index 'test1'... collected 4 docs, 0.0 MB sorted 0.0 Mhits, 100.0% done total 4 docs, 193 bytes total 0.006 sec, 30791 bytes/sec, 638.16 docs/sec indexing index 'test1stemmed'... collected 4 docs, 0.0 MB sorted 0.0 Mhits, 100.0% done total 4 docs, 193 bytes total 0.001 sec, 99382 bytes/sec, 2059.73 docs/sec skipping non-plain index 'dist1'... skipping non-plain index 'rt'... total 8 reads, 0.000 sec, 0.1 kb/call avg, 0.0 msec/call avg total 24 writes, 0.000 sec, 0.1 kb/call avg, 0.0 msec/call avg
Paso 5:Iniciar Esfinge
Además, configure su servidor Sphinx para que se inicie automáticamente en el arranque del sistema. Utilice el siguiente comando para establecer INICIO en sí.
sudo sed -i 's/START=no/START=yes/g' /etc/default/sphinxsearch
Ahora también inicie el servicio por primera vez y verifique el estado.
service sphinxsearch start service sphinxsearch status
También puede configurar el indexador en su crontab para ejecutarlo en un intervalo regular. El siguiente crontab se ejecutará cada hora.
0 * * * * /usr/bin/indexer --rotate --all
Paso 6:trabajar con Sphinx
Ejecutemos algunas consultas en su servidor Sphinx. Primero conéctese al servidor Sphinx MySQL usando el siguiente comando.
mysql -h0 -P9306
Ahora ejecute el comando uno por uno a continuación y vea los cambios. Esto es solo para su propio aprendizaje.
mysql> SELECT * FROM test1 WHERE MATCH('document'); mysql> INSERT INTO rt VALUES (1, 'adding', 'sample text here', 11); mysql> INSERT INTO rt VALUES (2, 'adding some more', 'sample text here', 22); mysql> SELECT gid/11 FROM rt WHERE MATCH('sample') GROUP BY gid; mysql> SELECT * FROM rt ORDER BY gid DESC; mysql> SELECT *, WEIGHT() FROM test1 WHERE MATCH('"document one"/1'); mysql> SHOW META; mysql> SET profiling=1; mysql> SELECT * FROM test1 WHERE id IN (1,2,4); mysql> SHOW PROFILE; mysql> SELECT id, id%3 idd FROM test1 WHERE MATCH('this is | nothing') GROUP BY idd; mysql> SHOW PROFILE; mysql> SELECT id FROM test1 WHERE MATCH('is this a good plan?'); mysql> SHOW PLAN; mysql> SELECT COUNT(*) FROM test1; mysql> CALL KEYWORDS ('one two three', 'test1'); mysql> CALL KEYWORDS ('one two three', 'test1', 1); mysql> SHOW TABLES;