Wednesday, October 12, 2011

RT (Real Time) index pada Sphinx

meneruskan posting saya disini

Beberapa hari ini saya mencari cari cara membuat realtime index menggunakan spihinx
setelah muter muter di forum forum dan dengan bantuan mbah google saya mendapatkan beberapa pencerahan

  1. sphinx mendukung realtime index sejak versi 1.10 versi 0.9x tidak mendukungnya
  2. ada beberapa cara melakukan realtime index, 1 menggunakan main:delta index dan yang kedua menggunakan type RT pada indexer di sphinx config.
saya menggunakan cara yang kedua karena main: delta index menurut saya bukan RT yang benar benar RT, maksudnya adalah kita membuat 2 buah index untuk menyimpan hasil indexing sphinx kita, yang pertma menggunakan main: dan updatenya disimpan di delta dahulu, namun ada waktu berkala untuk mengupdate indexing kita(Maaf jika pemahaman saya sedikit salah :D namun sepengetahuna saya itu yang dilakukan sphinx).
namun jika kita menggunakan RT, maka input baru yang kita masukkan dapat langsung dicari menggunakan sphinx search
mungkin langsung saja langkah;langkah membuat RT index di sphinx

  • tambahkan di dalam sphinx.conf anda seperti ini

index testrt{
type = rt
path = c:/sphinx/data/testrt
charset_type = utf-8
rt_mem_limit = 512M
rt_field = nama
rt_field = alamat
rt_field = kota
rt_field = telp
rt_attr_string = nama
rt_attr_string = alamat
rt_attr_string = kota
rt_attr_string = telp
}

maksudnya adalah kita membuat index testrt dengan tipe rt(realtime), hanya tambahkan saja, karena realtime index tidak memerlukan source untuk mengindex.


  • lalu dibagian searchd didalam sphinx.conf tambahkan

searchd{
listen = 9312
listen = 9306:mysql41 log = c:/sphinx/log/searchd.log
query_log = c:/sphinx/log/query.log
read_timeout = 5
max_children = 30
pid_file = c:/sphinx/log/searchd.pid
max_matches = 1000
seamless_rotate = 1
preopen_indexes = 0
unlink_old = 1
workers = threads}


yang saya bold adalah yang terpenting dalam bagian searchd, jadi maksudnya searchd akan listening port 9306 di localhost kita untuk melakukan indexing ke dalam index testrt kita dah workers adalah parameter yang dibutuhkan untuk melakukan RT index

lalu jalankan service sphinx yang sudah ada

setelah itu buka mysql di command prompt lalu ketiikan


jika berhasil maka data jhon akan masuk ke dalam hasil indexing kita, 

UPDATE


untuk mencoba di php kita dapat membuat script php untuk insert mysql sederhana contohnya seperti ini

       $con = mysql_connect("127.0.0.1:9306");
        if (!$con)
        {
            die('Could not connect: ' . mysql_error());
        }

mysql_query("INSERT INTO testrt(id,nama,alamat,kota,telp) VALUES (1001,'lala','jalan jalan','jogjakarta','98989878');


penjelasannya seperti ini:
  •  $con = mysql_connect("127.0.0.1:9306"); adalah kita mecoba koneksi ke mysql dengan port 9306 dimana port tersebut juga digunakan oleh sphinx untuk melakukan realtime indexing.
  • lalu lakukan insert atau update dengan query mysql, namun tablenya adalah nama index dalam config sphinx kita      

No comments: