Sphinx adalah server pencarian teks lengkap yang sederhana, relevan dan open source. Itu ditulis dalam bahasa pemrograman C++ dan bekerja dengan Linux dan sistem operasi populer lainnya. Tutorial ini akan membantu Anda menginstal dan mengkonfigurasi server pencarian teks lengkap Sphinx di sistem operasi Ubuntu 16.04, 14.04 LTS.
Prasyarat
Sebelum memulai panduan ini, Anda harus memiliki hal-hal berikut.
- Server Ubuntu dengan akses sudo
- Server MySQL yang sudah diinstal sebelumnya
Langkah 1 — Instal Sphinx
Menginstal Sphinx di Ubuntu mudah karena ada di repositori paket asli. Instal menggunakan apt-get package manager di sistem Ubuntu Anda.
sudo add-apt-repository ppa:builds/sphinxsearch-rel22 sudo apt-get update sudo apt-get install sphinxsearch
Langkah 2 – Impor Database MySQL
Mari kita import contoh file SQL ke database. Pertama, buat database bernama test di server MySQL Anda, setelah itu restore database yang disediakan oleh paket pencarian sphinx.
sudo mysqladmin -u root -p create test sudo mysql -u root -p test < /usr/share/doc/sphinxsearch/example-conf/example.sql
Langkah 3 – Konfigurasi Sphinx
Edit konfigurasi sphinx seperti di bawah ini dan edit untuk konfigurasi koneksi MySQL seperti yang ditunjukkan di bawah ini.
sudo vi /etc/sphinxsearch/sphinx.conf
source src1 { # data source type. mandatory, no default value # known types are mysql, pgsql, mssql, xmlpipe, xmlpipe2, odbc type = mysql ##################################################################### ## SQL settings (for 'mysql' and 'pgsql' types) ##################################################################### # some straightforward parameters for SQL source types sql_host = localhost sql_user = root sql_pass = secret sql_db = test sql_port = 3306 # optional, default is 3306
Langkah 4 – Menjalankan Pengindeks
Jalankan pengindeks untuk membuat indeks teks lengkap dari data Anda. Pengindeks adalah yang pertama dari dua alat utama sebagai bagian dari Sphinx. Ini berfungsi untuk mengumpulkan data yang akan dicari. Anda akan melihat hasilnya seperti di bawah ini.
sudo indexer --all Sphinx 2.2.11-id64-release (95ae9a6) Copyright (c) 2001-2016, Andrew Aksyonoff Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com) using config file '/etc/sphinxsearch/sphinx.conf'... indexing index 'test1'... collected 4 docs, 0.0 MB sorted 0.0 Mhits, 100.0% done total 4 docs, 193 bytes total 0.006 sec, 30791 bytes/sec, 638.16 docs/sec indexing index 'test1stemmed'... collected 4 docs, 0.0 MB sorted 0.0 Mhits, 100.0% done total 4 docs, 193 bytes total 0.001 sec, 99382 bytes/sec, 2059.73 docs/sec skipping non-plain index 'dist1'... skipping non-plain index 'rt'... total 8 reads, 0.000 sec, 0.1 kb/call avg, 0.0 msec/call avg total 24 writes, 0.000 sec, 0.1 kb/call avg, 0.0 msec/call avg
Langkah 5 – Memulai Sphinx
Juga, konfigurasikan server Sphinx Anda untuk memulai secara otomatis saat boot sistem. Gunakan perintah di bawah ini untuk menyetel MULAI ke ya.
sudo sed -i 's/START=no/START=yes/g' /etc/default/sphinxsearch
Sekarang juga mulai layanan untuk pertama kalinya dan periksa statusnya.
service sphinxsearch start service sphinxsearch status
Anda juga dapat mengonfigurasi pengindeks di crontab Anda untuk menjalankannya secara berkala. Crontab di bawah ini akan berjalan setiap jam.
0 * * * * /usr/bin/indexer --rotate --all
Langkah 6 – Bekerja dengan Sphinx
Mari kita jalankan beberapa pertanyaan di server Sphinx Anda. Pertama-tama sambungkan ke server MySQL Sphinx menggunakan perintah berikut.
mysql -h0 -P9306
Sekarang jalankan satu per satu perintah di bawah ini dan lihat perubahannya. Ini hanya untuk pembelajaran Anda sendiri.
mysql> SELECT * FROM test1 WHERE MATCH('document'); mysql> INSERT INTO rt VALUES (1, 'adding', 'sample text here', 11); mysql> INSERT INTO rt VALUES (2, 'adding some more', 'sample text here', 22); mysql> SELECT gid/11 FROM rt WHERE MATCH('sample') GROUP BY gid; mysql> SELECT * FROM rt ORDER BY gid DESC; mysql> SELECT *, WEIGHT() FROM test1 WHERE MATCH('"document one"/1'); mysql> SHOW META; mysql> SET profiling=1; mysql> SELECT * FROM test1 WHERE id IN (1,2,4); mysql> SHOW PROFILE; mysql> SELECT id, id%3 idd FROM test1 WHERE MATCH('this is | nothing') GROUP BY idd; mysql> SHOW PROFILE; mysql> SELECT id FROM test1 WHERE MATCH('is this a good plan?'); mysql> SHOW PLAN; mysql> SELECT COUNT(*) FROM test1; mysql> CALL KEYWORDS ('one two three', 'test1'); mysql> CALL KEYWORDS ('one two three', 'test1', 1); mysql> SHOW TABLES;