Cari solusi indexing database standalone yang handal? Salah satu solusinya adalah Sphinx. Sphinx adalah engine pengindeksan full-text yang didesain untuk terintegrasi dengan baik ke RDBMS-RDBMS macem MySQL dan PostgreSQL, dan yang asiknya laginya Sphinx sudah menyediakan API ke bahasa-bahasa scripting populer macem PHP, Python, Perl dan Ruby.


Karena saya develop aplikasi pake bahasa skripting PHP, maka Sphinx merupakan solusi yang pas untuk saya. Salah satu fitur yang bikin saya ngiler adalah statement berikut ini:



"high search speed (avg query is under 0.1 sec on 2-4 GB text collections)"

Wuiidddiihhh kalo dibandingin sama indexing native mysql, 100 ribu records yang besarnya sekitar 30MB aje ude empot-empotan!!! Statement berikutnya juga bikin ileran



"high scalability (upto 100 GB of text, upto 100 M documents on a single CPU)"

Saat tulisan ini dibuat, saya develop aplikasi web pake Macbook Pro, OS Snow Leopard 10.6.3, dan karena saya males compile-compile Apache, MySQL dan PHP (kecuali di OS GNU/Linux entah kenapa kurang apdol rasanya kalo ga di-compile sendiri heheheheee *kabboorr*), jadilah saya pake XAMPP for Mac OSX versi 1.7.2.


Karena binary Sphinx kage ade buat Mac OSX, cuman ade buat "Mikocok Winslow", maka itu berarti kite harus compile sendiri Sphinx. ALHAMDULILLAH WA SYUKURILLAH! OSX udah nyedian Xcode yang didalemnya udah ada semua tool development UNIX macem gcc, g++, make, automake, autoconf, you name it lah! GRATIS lagi! *Getokin Apple kalo sampe paket XCode dibikin berbayar*. ALHAMDULILLAH lagi, karena Mac OSX basisnya UNIX juga (Darwin+FreeBSD), maka console dengan shell prompt Bash yang kesohor itupun ude ade by default di OSX *ffiuuuuhhhhh, can't live without those consoles*. ALHAMDULILLAH lagi! struktur direktori Mac OSX yang kaga jauh beda sama UNIX atau GNU/Linux!


Jadilah saya "iseng-iseng berhadiah" compile Sphinx di Macbook Pro saya. Yang pasti sebelum mulai compile Sphinx, download dan install dahulu library-library berikut ini (beserta dengan header-header developmentnya!! kudu, wajib!!):



  1. Source code terbaru Sphinx

  2. Source code libstemmer

  3. Source code dan file-file header MySQL kalo kita mau integrasikan Sphinx dengan MySQL

  4. Source code dan file-file header PostgreSQL kalo kita mau integrasikan Sphinx dengan PostgreSQL

  5. Bagi yang menggunakan XAMPP bisa lebih mudah, download paket XAMPP-Dev yang sesuai dengan versi yang kita pake


Proses instalasinya kira-kira begini:



  1. Buka aplikasi "Terminal", kalo belom tau coba cari di /Applications/Utilities/

  2. Ekstrak file distribusi Sphinx pake perintah:
    tar xvf sphinx-0.9.9.tar.gz

  3. Ekstrak file distribusi libstemmer dan kopikan folder ekstraksi libstemmer ke dalam folder source Sphinx yang baru saja kita ekstrak pake perintah:
    cp -r ./libstemmer_c sphinx-0.9.9

  4. Masuk ke direktori hasil ekstraksi pake perintah:
    cd sphinx-0.9.9


  5. Karena saya pake XAMPP Mac OSX perintah configure saya seperti ini:

    Dicarve@Macbook sphinx-0.9.9$ CFLAGS="-O -arch i386" CXXFLAGS="-O -arch i386 -I/Applications/XAMPP/xamppfiles/include/ -I/Applications/XAMPP/xamppfiles/include/mysql" LDFLAGS="-arch i386 -L/Applications/XAMPP/xamppfiles/lib" ./configure --prefix=/usr/local/ --with-mysql -with-libstemmer --with-mysql-includes=/Applications/XAMPP/xamppfiles/include/mysql --with-mysql-libs=/Applications/XAMPP/xamppfiles/lib/mysql

    Saya sempet agak-agak stress karena diawal-awal proses kompilasi gagal melulu! setelah baca-baca keliling Internet dan baca disini, ternyata sphinx-nye harus di-compile di mode 32 bit! *karena by default gcc di Mac OSX compile di mode 64 bit*






  6. Apabila proses konfigurasi berjalan lancar tanpa masalah, maka lanjutkan dengan perintah berikut secara berurutan:

    $ make

    $ sudo make install



Horreee Sphinx berhasil diinstall!!!! Yiiihhuuu!!! Selanjutnya tinggal konfigurasi Sphinx biar bisa "bicara" sama MySQL atau PostgreSQL, selamat mencoba, dan jangan lupa baca dokumentasi sphinx di website resminya, RTFM!