Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Guia para usar Sphinx com PHP e MySQL


Me deparei com este post, mas não encontrei uma resposta que eu queria ver. Então aqui está o meu guia de início rápido:

1. Instalar Esfinge

No Mac com Homebrew:
brew install sphinx

No Amazon Linux (CentOS) com yum:
yum install sphinx

2. Criar configuração do Sphinx

Sphinx vem com modelo de configuração. Procure sphinx.conf.dist no diretório configs:

No Mac instalado com o Homebrew:
/usr/local/Cellar/sphinx/<sphinx version>/etc

No Amazon Linux instalado com yum:
/etc/sphinx

É bastante simples, mas pode conter muitas configurações para um novato. Nesse caso, você pode usar esta configuração simples:
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
}

Eu adicionei a configuração max_matches a essa configuração porque minha primeira pergunta depois que tudo funcionou foi "Por que sempre recebo apenas 20 resultados de pesquisa?". Com max_matches você pode definir o limite para o número de resultados de pesquisa.

3. Criar índice usando indexador
indexer --all

4. Execute o daemon Sphinx
sudo searchd -c /path/to/config/sphinx.conf

5. Instale a extensão PHP Sphinx

No Mac com Homebrew:
brew install homebrew/php/php56-sphinx

No Amazon Linux com yum:
yum install libsphinxclient
pecl install sphinx

6. Consulte seu índice do PHP
$index = new SphinxClient();
$index->setServer("127.0.0.1", 9312);

$result = $index->query('some search term', 'TestIndex');

print_r($result);

Em caso de erros, você pode obter mais informações com o seguinte método:
$index->getLastError();

7. Mantenha o índice atualizado

Para manter um índice atualizado, você pode usar dois índices:
  1. Índice principal, que não é atualizado com frequência (uma vez por semana, mês etc.)
  2. E o índice delta, que é atualizado com frequência (a cada hora, 5 minutos etc.)

Toda vez que o índice delta é reindexado, ele é mesclado com o índice principal

Siga este link http://www.sphinxconsultant.com/sphinx-search-delta -indexação/ para ler mais sobre esta abordagem.

Links que achei úteis: