Sphinx es un motor de búsqueda de texto completo de alto rendimiento basado en SQL. El rendimiento de Sphinx está entre los mejores de muchos motores de búsqueda de texto completo. Con Sphinx, podemos realizar funciones de búsqueda más profesionales que las de la propia base de datos, y además podemos realizar muchas optimizaciones de rendimiento específicas.

Características de Sphinx

  • Creación rápida de índices: se puede crear un índice de casi 1 millón de registros en unos 3 minutos, y al adoptar el método de índice incremental, la reconstrucción del índice es muy rápida.
  • Velocidad de búsqueda relámpago: incluso con una gran cantidad de datos de 10 millones de registros, la velocidad de consulta es de nivel de milisegundos; en un volumen de texto de 2-4 GB, la velocidad promedio de consulta es inferior a 0.1 segundos.
  • Se han diseñado API de búsqueda para muchos lenguajes de script, como PHP, Python,PerlRuby, etc. Por lo tanto, puede invocar convenientemente las interfaces relacionadas de Sphinx en la mayoría de las aplicaciones de programación.
  • Se ha diseñado un complemento de motor de almacenamiento para MySQL, por lo que si usa Sphinx en MySQL, será extremadamente conveniente.
  • Admite búsqueda distribuida y puede escalar horizontalmente el rendimiento del sistema.

Diagrama de arquitectura del motor de búsqueda PHP+MySQL+Sphinx

Instalar Sphinx en MySQL

Hay dos formas de instalar Sphinx en MySQL:

  • La primera forma es mediante llamadas a la API. Podemos usar PHP, Python,PerlRuby y otros lenguajes de programación para realizar consultas. Este método no requiere recompilar MySQL, los cambios entre módulos son relativamente menores y es más flexible.
  • La segunda requiere recompilar MySQL e integrar Sphinx en MySQL como un complemento. Este método implica menos cambios en el programa; solo necesita modificar las declaraciones SQL, pero la premisa es que su versión de MySQL debe ser 5.1 o superior.

A continuación se muestra la primera forma de instalación:

#下载最新稳定版
wget http://www.sphinxsearch.com/downloads/sphinx-0.9.9.tar.gz
tar xzvf sphinx-0.9.9.tar.gz
cd sphinx-0.9.9
./configure --prefix=/usr/local/sphinx/   --with-mysql  --enable-id64
make
make install

Instalación del complemento de segmentación de chino de Sphinx: Coreseek

Nota: el tutorial de instalación de coreseek proviene deaquí, a continuación se muestra el proceso detallado:

Instalar y actualizar autoconf

Debido a que coreseek requiere autoconf versión 2.64 o superior, es necesario actualizar autoconf; de lo contrario, se producirán errores. Desdehttp://download.chinaunix.net/download.php?id=29328&ResourceID=648Descargue autoconf-2.64.tar.bz2, el método de instalación es el siguiente:

tar -jxvf autoconf-2.64.tar.bz2
cd autoconf-2.64
./configure
make
make install

Descargar coreseek

La nueva versión de coreseek incluye el diccionario y el código fuente de sphinx en un solo paquete, por lo que solo necesita descargar el paquete de coreseek.

wget http://www.wapm.cn/uploads/csft/3.2/coreseek-3.2.14.tar.gz

Instalar mmseg (el diccionario utilizado por coreseek)

tar xzvf coreseek-3.2.14.tar.gz
cd mmseg-3.2.14
./bootstrap    #输出的warning信息可以忽略,如果出现error则需要解决
./configure --prefix=/usr/local/mmseg3
make && make install
cd ..

Instalar coreseek (sphinx)

cd csft-3.2.14
sh buildconf.sh    #输出的warning信息可以忽略,如果出现error则需要解决
./configure --prefix=/usr/local/coreseek  --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql
make && make install
cd ..

Probar la segmentación de mmseg y la búsqueda de coreseek

Nota: es necesario configurar previamente el conjunto de caracteres como zh_CN.UTF-8 para garantizar la correcta visualización del chino. También es válido que mi conjunto de caracteres del sistema sea en_US.UTF-8.

cd testpack
cat var/test/test.xml  #此时应该正确显示中文
/usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc var/test/test.xml
/usr/local/coreseek/bin/indexer -c etc/csft.conf --all
/usr/local/coreseek/bin/search -c etc/csft.conf 网络搜索
此时正确的应该返回
words:
1. '网络': 1 documents, 1 hits
2. '搜索': 2 documents, 5 hits

Generar el diccionario y el archivo de configuración de mmseg

La nueva versión ya lo genera automáticamente.

Resumen

Sphinx, como motor de búsqueda de texto completo SQL de alto rendimiento, merece la atención continua de los desarrolladores, especialmente su soporte de API en varios idiomas, que facilita su aplicación por parte de los desarrolladores.

Fuente:http://www.codeceo.com/article/sphinx-sql-search-engine.html
Autor: Red de programadores – Xiaofeng