sql >> Database teknologi >  >> RDS >> Mysql

Guide til brug af Sphinx med PHP og MySQL

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:

  1. Hovedindeks, som ikke opdateres ofte (en gang om ugen, måned osv.)
  2. 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:



  1. Forskellen mellem In memory-databaser og diskhukommelsesdatabase

  2. JSON_TABLE() Funktion i Oracle

  3. Sådan bruger du Oracle PLSQL-tabeller (associativ array eller indeks-for-tabel)

  4. Sådan konverteres Unix-epoke til et tidsstempel