Kamis, 01 November 2012

Part 3 :: Membuat Search Engine Menggunakan Sphinx dan PHP

Oke lanjut lagi, pada bagian ini kita akan membuat halaman untuk hasil pencarian. Kita akan menambahkan 3 buah file sekaligus ke dalam folder projek kita yaitu C:/xampp/htdocs/herbalsimple. File yang pertama kita tambahkan adalah sphinxapi.php, darimana tuh? File ini sebenarnya tinggal kita ambil saja dari hasil ekstraksi Sphinx tadi, sphinxapi.php ini ada di folder C:/sphinx/api/ jadi tinggal copy saja dan masukkan ke dalam folder projek kita.


Masih ada 2 file lagi hehe, selanjutnya kita akan membuat file search_helper.php. File ini sebenarnya opsional, tapi berguna untuk menghasilkan tampilan hasil pencarian agar mirip Google. Kalau kita mencari di Google kan hanya menampilkan beberapa kalimat saja dari situs yang ingin kita cari. Nah, di dalam search_helper.php ini terdapat fungsi tersebut. Saya memperolehnya dari internet, beberapa tahun yang lalu. Isi file search_helper.php  kurang lebih seperti ini :
Jadi file tersebut hanya berisi fungsi PHP yang akan kita gunakan, sama seperti file sphinxapi.php di dalamnya juga hanya terdapat fungsi-fungsi yang nantinya digunakan untuk search engine.

Selanjutnya kita akan membuat file terakhir pada bagian ini yaitu hasil_pencarian.php. Nah, file ini yang sebenarnya akan mengatur tampilan untuk hasil pencarian kita. File ini akan menggunakan/memerlukan kedua file sebelumnya yaitu sphinxapi.php dan search_helper.php. Nanti akan terlihat di kode PHP-nya, isi dari file hasil_pencarian.php kurang lebih seperti ini :
Oh ya tolong perhatikan pada baris ke-89 seharusnya penutup tag <script> adalah </script> bukan </stript>. Saya sengaja melakukannya karena kalau saya tulis </script> dia akan memotong syntaxhighliter-nya (yang saya pakai untuk menampilkan kode ini), jadi kode-kode di bawahnya tidak bisa muncul. Mohon maaf sebelumnya karena udah diotak atik tetep ga bisa jadi ya digituin ja haha.

Sampai sini proses pembuatan halaman hasil pencarian telah selesai. Silakan diuji, apakah berhasil atau tidak? Kalau ada yang error kasih komentar yaa. Kalau sudah benar, kurang lebih tampilannya seperti ini :


Nah ini juga tampilannya sederhana, kalau mau diotak-atik lagi silakan. Kalau punya saya tampilannya seperti ini :


Sebenarnya masih ada Part 4 yaitu bagian terakhir untuk menampilkan detail hasil pencariannya. Misalnya, ingin lebih mengetahui Asam Jawa melalui link yang saya berikan pada setiap hasil pencarian. Sampai sini, kamu sudah berhasil membuat sebuah search engine, selamaattt. :)

11 komentar:

  1. gan . . .
    knapa ga jalan ya sphinx nya ??
    apa karna pake win 7 64 bit ??

    karna ga persis sama pas waktu seting sphinx nya . . .

    BalasHapus
    Balasan
    1. Saya juga pakai win 7 64 bit gan, proses indexing yg agan tanya di Part 1 udah berhasil belum? kalau belum berhasil, ga akan bisa jalan gan Sphinx nya. :)

      Hapus
  2. Mantap skli gan.tp klo bole nanya untuk pencarian dalam database (mis. mau nyari judul buku dalam tabel katalog buku gtu) gimana codingnya ya? maf newbie bangt neh.
    Mksh....

    BalasHapus
    Balasan
    1. tinggal ganti fungsi source untuk Sphinx nya gan, yang file .conf.in itu, liat Part 1 lagi gan. Nih ane kasih contoh fungsi source kalau sumbernya dari DBMS, misal MySQL:
      source mysql
      {
      type = mysql
      sql_host = localhost
      sql_user = root
      sql_pass =
      sql_db = skripsi
      sql_port = 3306
      sql_query = \
      SELECT id_news, docno, title, author, date_published, body, timestamp \
      FROM news
      }

      Hapus
    2. Ok gan, langsung ke tkp.
      makasih ya sudah nanggapin.
      sukses selalu buat anda.

      Hapus
    3. Sudah saya coba gan tapi gagal diindeks.

      source mysql
      {
      type = mysql
      sql_host = localhost
      sql_user = root
      sql_pass =
      sql_db = dbjudul
      sql_port = 3306
      sql_query = \
      SELECT npm, judul \
      FROM tbljudul
      }

      # Fungsi indexing
      index test1
      {
      source = mysql # Memilih fungsi korpus yang akan digunakan
      path = C:/sphinx/data/test1
      docinfo = extern
      #charset_type = sbcs
      charset_type = utf-8

      min_word_len = 25 # Minimum panjang kata yang akan diindeks
      enable_star = 0
      html_strip = 0
      stopwords = C:/sphinx/data/stopwords.txt # Daftar kata buang
      min_stemming_len= 4 # Minimum panjang kata yang akan dipotong
      }


      index testrt
      {
      type = rt
      rt_mem_limit = 32M
      path = C:/sphinx/data/testrt
      charset_type = utf-8
      #rt_field = npm
      rt_field = judul
      rt_attr_uint = gid
      }


      indexer
      {
      mem_limit = 32M
      }


      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 = 1
      unlink_old = 1
      workers = threads # for RT to work
      binlog_path = C:/sphinx/data
      }

      kurang atau salahnya dimana ya?

      Hapus
    4. Pesan error nya apa gan?
      Coba pas bagian fungsi 'searchd' tanda pagar di '#listen = 9306:mysql41' dihilangkan aja gan, jadi listen nya ada 2. (tanda # sebagai komentar)

      Hapus
    5. gan sudah saya coba dan tampil pd page penelesuran, tapi pas dimasukin kata kunci kemudian di search, ga muncul data file nya kira2 kenapa ya gan mohon bantuannya ga :)

      Hapus
    6. gan dharma, proses di Sphinx nya udah berhasil gan? atau ada error? atau ada yg belum dilakukan?

      Hapus
  3. mau tanya, gmn kalau folder project kita sudah di taruh di server hostingan? apa bisa dijalankan sphinx nya?
    Trus kalo kodingnya pake format JSON gimana caranya?

    BalasHapus
  4. Kueri gagal : connection to localhost:9312 failed (errno=10061, msg=No connection could be made because the target machine actively refused it.).

    BalasHapus