sql >> Base de Datos >  >> RDS >> Mysql

Guía para usar Sphinx con PHP y MySQL

Encontré esta publicación pero no encontré la respuesta que quería ver. Así que aquí está mi Guía de inicio rápido:

1. Instalar Esfinge

En Mac con Homebrew:

brew install sphinx

En Amazon Linux (CentOS) con yum:

yum install sphinx

2. Crear configuración de Sphinx

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

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 demasiadas configuraciones 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 max_matches a esta configuración porque mi primera pregunta después de que todo funcionara fue "¿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. Ejecute el demonio Sphinx

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

5. Instalar la 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 desde 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 actualizado el índice

Para mantener un índice actualizado puede utilizar dos índices:

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

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

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

Enlaces que encontré útiles: