sql >> Databáze >  >> RDS >> Mysql

Průvodce používáním Sphinx s PHP a MySQL

Narazil jsem na tento příspěvek, ale nenašel jsem odpověď, kterou bych chtěl vidět. Takže zde je můj rychlý průvodce:

1. Nainstalujte Sphinx

Na Macu s Homebrew:

brew install sphinx

Na Amazon Linux (CentOS) s yum:

yum install sphinx

2. Vytvořte konfiguraci Sphinx

Sphinx přichází s konfigurační šablonou. Hledejte sphinx.conf.dist v adresáři configs:

Na Macu nainstalovaném s Homebrew:

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

Na Amazon Linux nainstalovaný s yum:

/etc/sphinx

Je to docela jednoduché, ale pro nováčka může obsahovat příliš mnoho nastavení. V takovém případě můžete použít tuto jednoduchou konfiguraci:

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
}

Do této konfigurace jsem přidal nastavení max_matches, protože moje první otázka poté, co jsem vše zprovoznil, byla "Proč vždy dostanu pouze 20 výsledků vyhledávání?". Pomocí max_matches můžete nastavit limit pro počet výsledků vyhledávání.

3. Vytvořte index pomocí indexeru

indexer --all

4. Spusťte démona Sphinx

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

5. Nainstalujte rozšíření PHP Sphinx

Na Macu s Homebrew:

brew install homebrew/php/php56-sphinx

Na Amazon Linux s yum:

yum install libsphinxclient
pecl install sphinx

6. Dotazujte se na svůj index z PHP

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

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

print_r($result);

V případě jakýchkoli chyb můžete získat další informace následujícím způsobem:

$index->getLastError();

7. Udržujte aktuální index

Chcete-li udržovat aktuální index, můžete použít dva indexy:

  1. Hlavní index, který není často aktualizován (jednou za týden, měsíc atd.)
  2. A delta index, který se často aktualizuje (každou hodinu, 5 minut atd.)

Pokaždé, když je index delta znovu indexován, je sloučen s hlavním indexem

Klikněte na tento odkaz http://www.sphinxconsultant.com/sphinx-search-delta -indexování/ a přečtěte si o tomto přístupu více.

Odkazy, které jsem považoval za užitečné:



  1. Django a připojení k databázi pouze pro čtení

  2. Jak psát uložené procedury pro profesionální zprávy SSRS

  3. Rozdíl mezi prohlášením JDBC a připraveným prohlášením

  4. Maze ladění výkonu