Попаднах на тази публикация, но не намерих отговор, който исках да видя. Ето моето ръководство за бързо начало:
1. Инсталирайте Сфинкса
На Mac с Homebrew:
brew install sphinx
На Amazon Linux (CentOS) с yum:
yum install sphinx
2. Създайте конфигурация на Sphinxа
Sphinx идва с конфигурационен шаблон. Потърсете sphinx.conf.dist в директорията configs:
На Mac, инсталиран с Homebrew:
/usr/local/Cellar/sphinx/<sphinx version>/etc
На Amazon Linux, инсталиран с yum:
/etc/sphinx
Това е доста просто, но може да съдържа твърде много настройки за начинаещ. В такъв случай можете да използвате тази проста конфигурация:
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
}
Добавих настройка max_matches към тази конфигурация, защото първият ми въпрос, след като накарах всичко да работи, беше „Защо винаги получавам само 20 резултата от търсенето?“. С max_matches можете да зададете ограничението за броя на резултатите от търсенето.
3. Създайте индекс с помощта на индексатора
indexer --all
4. Пуснете демон Sphinxа
sudo searchd -c /path/to/config/sphinx.conf
5. Инсталирайте разширението PHP Sphinx
На Mac с Homebrew:
brew install homebrew/php/php56-sphinx
На Amazon Linux с yum:
yum install libsphinxclient
pecl install sphinx
6. Заявете своя индекс от PHP
$index = new SphinxClient();
$index->setServer("127.0.0.1", 9312);
$result = $index->query('some search term', 'TestIndex');
print_r($result);
В случай на грешки можете да получите повече информация по следния метод:
$index->getLastError();
7. Поддържайте актуална индекса
За да поддържате актуален индекс, можете да използвате два индекса:
- Основен индекс, който не се актуализира често (веднъж седмично, месец и т.н.)
- И делта индекс, който се актуализира често (на всеки час, 5 минути и т.н.)
Всеки път, когато делта индексът се преиндексира, той се слива с основния индекс
Следвайте тази връзка http://www.sphinxconsultant.com/sphinx-search-delta -индексиране/ за да прочетете повече за този подход.
Връзки, които намерих за полезни:
- 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 -индексиране/
- https://github.com/schmittjoh/ php-stubs/tree/master/res/php/sphinx