Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Panduan menggunakan Sphinx dengan PHP dan MySQL

Saya menemukan posting ini tetapi tidak menemukan jawaban yang ingin saya lihat. Jadi, inilah Panduan Memulai Cepat saya:

1. Instal Sphinx

Di Mac dengan Homebrew:

brew install sphinx

Di Amazon Linux (CentOS) dengan yum:

yum install sphinx

2. Buat konfigurasi Sphinx

Sphinx hadir dengan template konfigurasi. Cari sphinx.conf.dist di direktori configs:

Di Mac yang diinstal dengan Homebrew:

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

Di Amazon Linux yang diinstal dengan yum:

/etc/sphinx

Ini cukup mudah tetapi mungkin berisi terlalu banyak pengaturan untuk pemula. Jika demikian, Anda dapat menggunakan konfigurasi sederhana ini:

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
}

Saya menambahkan pengaturan max_matches ke konfigurasi ini karena pertanyaan pertama saya setelah semuanya berfungsi adalah "Mengapa saya selalu mendapatkan hanya 20 hasil pencarian?". Dengan max_matches Anda dapat mengatur batas jumlah hasil pencarian.

3. Buat indeks menggunakan pengindeks

indexer --all

4. Jalankan daemon Sphinx

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

5. Instal ekstensi PHP Sphinx

Di Mac dengan Homebrew:

brew install homebrew/php/php56-sphinx

Di Amazon Linux dengan yum:

yum install libsphinxclient
pecl install sphinx

6. Buat kueri indeks Anda dari PHP

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

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

print_r($result);

Jika terjadi kesalahan, Anda dapat memperoleh informasi lebih lanjut dengan metode berikut:

$index->getLastError();

7. Tetap perbarui indeks

Untuk mempertahankan indeks terkini, Anda dapat menggunakan dua indeks:

  1. Indeks utama, yang tidak sering diperbarui (sekali seminggu, sebulan, dll)
  2. Dan indeks delta, yang sering diperbarui (setiap jam, 5 menit, dll)

Setiap kali indeks delta diindeks ulang, indeks tersebut digabungkan dengan indeks utama

Ikuti tautan ini http://www.sphinxconsultant.com/sphinx-search-delta -pengindeksan/ untuk membaca lebih lanjut tentang pendekatan ini.

Tautan yang menurut saya berguna:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara mendapatkan sertifikat Amazon MySQL RDS

  2. PHP Konversi mysql ke mysqli

  3. MySQL match() against() - urutkan berdasarkan relevansi dan kolom?

  4. Hapus catatan duplikat dari tabel tanpa pk atau id atau kolom unik di mysql

  5. Cara mengakses database MySql jarak jauh dari Aplikasi iPhone