php mysql search sphinx

Guía para usar Sphinx con PHP y MySQL



search (4)

Eche un vistazo a las extensiones de Search Engine en php.net: http://php.net/manual/en/refs.search.php .

Estoy buscando una guía completa para usar Sphinx con PHP y MySQL. Me gustaría uno que sea un poco más simple y fácil que el que se proporciona en el sitio.

Estoy buscando algunos conceptos sobre cómo funciona exactamente todo.

Tengo un servidor con PHP, HTML, otros datos y una base de datos MySQL. ¿Cómo voy a configurar Sphinx para potenciar la búsqueda y los resultados que se devuelven?

Me gustaría poder pasar mis términos de búsqueda a mi script PHP y hacer que se ocupe de Sphinx y devolver los datos.

PD. También estoy abierto a sugerencias con respecto a otras alternativas a Sphinx.


Me encontré con esta publicación pero no encontré una respuesta que quisiera ver. Así que aquí está mi Guía de inicio rápido:

1. Instalar Sphinx

En Mac con Homebrew:

brew install sphinx

En Amazon Linux (CentOS) con yum:

yum install sphinx

2. Crea la configuración de Sphinx

Sphinx viene con una plantilla de configuración. Busque sphinx.conf.dist en el directorio configs:

En Mac instalado con Homebrew:

/usr/local/Cellar/sphinx/<sphinx version>/etc

En Amazon Linux instalado con yum:

/etc/sphinx

Es bastante sencillo, pero puede contener demasiados ajustes para un novato. En tal caso, puede usar esta configuración simple:

source TestSource { type = mysql sql_host = <host> sql_user = <user> sql_pass = <password> sql_db = <db> sql_query_range = select min(id), max(id) from TestTable sql_range_step = 2048 sql_query = select id, some_info from TestTable/ where id >= $start and id <= $end } index TestIndex { source = TestSource path = /var/lib/sphinx/test-index min_word_len = 3 min_infix_len = 3 } searchd { log = /var/log/sphinx/searchd.log query_log = /var/log/sphinx/query.log pid_file = /var/run/searchd.pid max_matches = 200 listen = localhost:9312 }

Agregué la configuración de max_matches a esta configuración porque mi primera pregunta después de que todo funcionaba era "¿Por qué siempre obtengo solo 20 resultados de búsqueda?". Con max_matches puede establecer el límite para el número de resultados de búsqueda.

3. Crear índice usando indexador

indexer --all

4. Ejecuta el daemon Sphinx

sudo searchd -c /path/to/config/sphinx.conf

5. Instalar extensión PHP Sphinx

En Mac con Homebrew:

brew install homebrew/php/php56-sphinx

En Amazon Linux con yum:

yum install libsphinxclient pecl install sphinx

6. Consulta tu índice de PHP

$index = new SphinxClient(); $index->setServer("127.0.0.1", 9312); $result = $index->query(''some search term'', ''TestIndex''); print_r($result);

En caso de cualquier error, puede obtener más información con el siguiente método:

$index->getLastError();

7. Mantener el índice actualizado

Para mantener un índice actualizado, puede usar dos índices:

  1. Índice principal, que no se actualiza a menudo (una vez por semana, mes, etc.)
  2. Y el índice delta, que se actualiza a menudo (cada hora, 5 minutos, etc.)

Cada vez que el índice delta se vuelve a indexar, se fusiona con el índice principal

Siga este enlace http://www.sphinxconsultant.com/sphinx-search-delta-indexing/ para leer más sobre este enfoque.

Enlaces que encontré útiles:


No estoy muy seguro de una buena guía, pero estos son mis pasos.

a) Descargar e instalar es bastante sencillo

b) Haga su primer índice: necesita una fuente, una ubicación, la configuración dada es muy buena, recuerde que puede usar una fuente primaria para configurar todas las áreas principales y luego otras fuentes se derivan de eso. Cada fuente debe comenzar con la clave principal y creo que funciona mejor hacer key_id AS id

c) Pruebe su índice usando la búsqueda

d) Comience su búsqueda de demonio para sphinx - searchd, esto es a lo que se conectará php y cómo obtiene sus resultados.

e) Realice una función para buscar todos los índices que pasen en el índice que desea buscar y devolverá los identificadores en una matriz que coincida con su búsqueda

f) Hacer un delta y actualizaciones.

Trabajo realizado: el foro de la esfinge es muy bueno y debería proporcionarlo si necesita ayuda. Ricardo


Here hay un muy buen tutorial de Sphinx de IBM.