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:
- Índice principal, que não é atualizado com frequência (uma vez por semana, mês etc.)
- 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:
- 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 -indexação/
- https://github.com/schmittjoh/ php-stubs/tree/master/res/php/sphinx