Natknąłem się na ten post, ale nie znalazłem odpowiedzi, którą chciałem zobaczyć. Oto mój przewodnik Szybki start:
1. Zainstaluj Sfinksa
Na Macu z Homebrew:
brew install sphinx
W Amazon Linux (CentOS) z mniam:
yum install sphinx
2. Utwórz konfigurację Sphinxa
Sphinx jest dostarczany z szablonem konfiguracji. Poszukaj sphinx.conf.dist w katalogu configs:
Na Macu z zainstalowanym Homebrew:
/usr/local/Cellar/sphinx/<sphinx version>/etc
W Amazon Linux zainstalowanym z yum:
/etc/sphinx
Jest to dość proste, ale może zawierać zbyt wiele ustawień dla nowicjusza. W takim przypadku możesz użyć tej prostej konfiguracji:
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
}
Dodałem ustawienie max_matches do tej konfiguracji, ponieważ moje pierwsze pytanie po tym, jak wszystko działało, brzmiało „Dlaczego zawsze otrzymuję tylko 20 wyników wyszukiwania?”. Za pomocą max_matches możesz ustawić limit liczby wyników wyszukiwania.
3. Utwórz indeks za pomocą indeksatora
indexer --all
4. Uruchom demona Sfinksa
sudo searchd -c /path/to/config/sphinx.conf
5. Zainstaluj rozszerzenie PHP Sphinx
Na Macu z Homebrew:
brew install homebrew/php/php56-sphinx
W Amazon Linux z mniam:
yum install libsphinxclient
pecl install sphinx
6. Zapytanie o indeks z PHP
$index = new SphinxClient();
$index->setServer("127.0.0.1", 9312);
$result = $index->query('some search term', 'TestIndex');
print_r($result);
W przypadku jakichkolwiek błędów możesz uzyskać więcej informacji w następujący sposób:
$index->getLastError();
7. Aktualizuj indeks
Aby utrzymać aktualny indeks, możesz użyć dwóch indeksów:
- Główny indeks, który nie jest często aktualizowany (raz w tygodniu, miesiącu itp.)
- I indeks delta, który często się aktualizuje (co godzinę, 5 minut itd.)
Za każdym razem, gdy indeks delta jest ponownie indeksowany, jest on scalany z głównym indeksem
Kliknij ten link http://www.sphinxconsultant.com/sphinx-search-delta -indeksowanie/ aby przeczytać więcej o tym podejściu.
Linki, które okazały się przydatne:
- 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 -indeksowanie/
- https://github.com/schmittjoh/ php-stubs/tree/master/res/php/sphinx