Jeg stødte på dette indlæg, men fandt ikke et svar, jeg gerne ville se. Så her er min hurtigstartguide:
1. Installer Sphinx
På Mac med Homebrew:
brew install sphinx
På Amazon Linux (CentOS) med yum:
yum install sphinx
2. Opret Sphinx config
Sphinx kommer med config skabelon. Se efter sphinx.conf.dist i configs-mappen:
På Mac installeret med Homebrew:
/usr/local/Cellar/sphinx/<sphinx version>/etc
På Amazon Linux installeret med yum:
/etc/sphinx
Det er ret ligetil, men kan indeholde for mange indstillinger til en nybegynder. I sådanne tilfælde kan du bruge denne enkle konfiguration:
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
}
Jeg tilføjede indstillingen max_matches til denne konfiguration, fordi mit første spørgsmål, efter at jeg fik alt til at fungere, var "Hvorfor får jeg altid kun 20 søgeresultater?". Med max_matches kan du indstille grænsen for antallet af søgeresultater.
3. Opret indeks ved hjælp af indeksering
indexer --all
4. Kør Sphinx daemon
sudo searchd -c /path/to/config/sphinx.conf
5. Installer PHP Sphinx-udvidelse
På Mac med Homebrew:
brew install homebrew/php/php56-sphinx
På Amazon Linux med yum:
yum install libsphinxclient
pecl install sphinx
6. Forespørg dit indeks fra PHP
$index = new SphinxClient();
$index->setServer("127.0.0.1", 9312);
$result = $index->query('some search term', 'TestIndex');
print_r($result);
I tilfælde af fejl kan du få mere information med følgende metode:
$index->getLastError();
7. Hold dig opdateret indeks
For at opretholde et ajourført indeks kan du bruge to indekser:
- Hovedindeks, som ikke opdateres ofte (en gang om ugen, måned osv.)
- Og deltaindeks, som opdateres ofte (hver time, 5 min. osv.)
Hver gang delta-indekset genindekseres, fusioneres det med hovedindekset
Følg dette link http://www.sphinxconsultant.com/sphinx-search-delta -indeksering/ for at læse mere om denne tilgang.
Links, jeg fandt nyttige:
- 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 -indeksering/
- https://github.com/schmittjoh/ php-stubs/tree/master/res/php/sphinx