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:
- Índice principal, que no se actualiza a menudo (una vez por semana, mes, etc.)
- 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:
- http://sphinxsearch.com/docs/current.html
- http://sphinxsearch.com/info/faq/
- http://atlchris.com/1996/working-with-sphinx-search-engine-on-a-lamp-linux-apache-mysql-and-php-stack-server/
- http://www.sphinxconsultant.com/sphinx-search-delta-indexing/
- https://github.com/schmittjoh/php-stubs/tree/master/res/php/sphinx
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.