sql >> Database >  >> RDS >> Mysql

Handleiding voor het gebruik van Sphinx met PHP en MySQL

Ik kwam dit bericht tegen, maar vond geen antwoord dat ik wilde zien. Dus hier is mijn snelstartgids:

1. Installeer Sphinx

Op Mac met Homebrew:

brew install sphinx

Op Amazon Linux (CentOS) met yum:

yum install sphinx

2. Sphinx-configuratie maken

Sphinx wordt geleverd met een configuratiesjabloon. Zoek naar sphinx.conf.dist in de map configs:

Op Mac geïnstalleerd met Homebrew:

/usr/local/Cellar/sphinx/<sphinx version>/etc

Op Amazon Linux geïnstalleerd met yum:

/etc/sphinx

Het is vrij eenvoudig, maar bevat mogelijk te veel instellingen voor een beginner. In dat geval kunt u deze eenvoudige configuratie gebruiken:

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
}

Ik heb de instelling max_matches aan deze configuratie toegevoegd omdat mijn eerste vraag nadat ik alles werkend had gekregen was:"Waarom krijg ik altijd maar 20 zoekresultaten?". Met max_matches kunt u de limiet voor het aantal zoekresultaten instellen.

3. Index maken met indexer

indexer --all

4. Voer Sphinx-daemon uit

sudo searchd -c /path/to/config/sphinx.conf

5. PHP Sphinx-extensie installeren

Op Mac met Homebrew:

brew install homebrew/php/php56-sphinx

Op Amazon Linux met yum:

yum install libsphinxclient
pecl install sphinx

6. Vraag uw index op vanuit PHP

$index = new SphinxClient();
$index->setServer("127.0.0.1", 9312);

$result = $index->query('some search term', 'TestIndex');

print_r($result);

In het geval van fouten kunt u meer informatie krijgen met de volgende methode:

$index->getLastError();

7. Blijf up-to-date index

Om de index up-to-date te houden, kunt u twee indexen gebruiken:

  1. Hoofdindex, die niet vaak wordt bijgewerkt (een keer per week, maand, enz.)
  2. En delta-index, die vaak wordt bijgewerkt (elk uur, 5 min, enz.)

Elke keer dat de delta-index opnieuw wordt geïndexeerd, wordt deze samengevoegd met de hoofdindex

Volg deze link http://www.sphinxconsultant.com/sphinx-search-delta -indexering/ om meer te lezen over deze aanpak.

Links die ik nuttig vond:



  1. Een tekenreeks en een getal samenvoegen in MySQL

  2. MySQL-indexen - wat zijn de best practices?

  3. Een database automatisch comprimeren en repareren in Access 2016

  4. Wat is de beste werkwijze voor het opslaan van aangepaste gegevens voor Wordpress