Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Przewodnik po Sphinx z PHP i MySQL

Natknąłem się na ten post, ale nie znalazłem odpowiedzi, którą chciałem zobaczyć. Oto mój przewodnik Szybki start:

1. Zainstaluj Sfinksa

Na Macu z Homebrew:

brew install sphinx

W Amazon Linux (CentOS) z mniam:

yum install sphinx

2. Utwórz konfigurację Sphinxa

Sphinx jest dostarczany z szablonem konfiguracji. Poszukaj sphinx.conf.dist w katalogu configs:

Na Macu z zainstalowanym Homebrew:

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

W Amazon Linux zainstalowanym z yum:

/etc/sphinx

Jest to dość proste, ale może zawierać zbyt wiele ustawień dla nowicjusza. W takim przypadku możesz użyć tej prostej konfiguracji:

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
}

Dodałem ustawienie max_matches do tej konfiguracji, ponieważ moje pierwsze pytanie po tym, jak wszystko działało, brzmiało „Dlaczego zawsze otrzymuję tylko 20 wyników wyszukiwania?”. Za pomocą max_matches możesz ustawić limit liczby wyników wyszukiwania.

3. Utwórz indeks za pomocą indeksatora

indexer --all

4. Uruchom demona Sfinksa

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

5. Zainstaluj rozszerzenie PHP Sphinx

Na Macu z Homebrew:

brew install homebrew/php/php56-sphinx

W Amazon Linux z mniam:

yum install libsphinxclient
pecl install sphinx

6. Zapytanie o indeks z PHP

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

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

print_r($result);

W przypadku jakichkolwiek błędów możesz uzyskać więcej informacji w następujący sposób:

$index->getLastError();

7. Aktualizuj indeks

Aby utrzymać aktualny indeks, możesz użyć dwóch indeksów:

  1. Główny indeks, który nie jest często aktualizowany (raz w tygodniu, miesiącu itp.)
  2. I indeks delta, który często się aktualizuje (co godzinę, 5 minut itd.)

Za każdym razem, gdy indeks delta jest ponownie indeksowany, jest on scalany z głównym indeksem

Kliknij ten link http://www.sphinxconsultant.com/sphinx-search-delta -indeksowanie/ aby przeczytać więcej o tym podejściu.

Linki, które okazały się przydatne:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak sprawdzić rozmiar bazy danych MySQL w systemie Linux?

  2. Token Firebase FCM – kiedy wysłać na serwer?

  3. Zakres liczb całkowitych SQL podczas tworzenia tabel

  4. Zobacz granty w MySQL

  5. Jak znaleźć ostatni dzień miesiąca dla podanej daty w MySQL?