Membuat Search Engine dengan ht://Dig

Posted on Selasa, 30 Maret 2010 by dv_iput

Salah satu kriteria desain suatu situs web dianggap baik adalah bila pemakai situs tersebut mudah dalam mencari informasi. Artinya, tersedia navigasi dan alat bantu mencari informasi yang baik. Salah satu alat bantu mencari informasi yang sering digunakan adalah fasilitas penelusuran dengan kata kunci (keyword) baik melalui database atau free-text. Dalam tulisan ini, penulis mencoba memaparkan bagaimana cara membuat fasilitas penelusuran free-text menggunakan program ht://Dig (http://www.htdig.org) yang dibuat untuk sistem operasi Unix dan variannya (Linux, FreeBSD). Dengan lisensi GPL (General Public License), anda bisa mendapatkan source code program, dan memodifikasinya sesuai dengan kebutuhan anda. Anda juga bisa mendapatkan format source lain (RPM) atau binary yang sudah di-port untuk OS tertentu (untuk HP-UX, RPM RedHat Linux, dan Windows NT).

Apa itu ht://Dig
Kalau anda tahu prinsip cara kerja search engine (seperti altavista), maka anda tidak akan kesulitan dalam memahami cara kerja ht://Dig. ht://Dig adalah suatu sistem pengindeksan dan penelusuran WWW. ht://Dig tidak didesain untuk "bersaing" dengan powerful search engine seperti Lycos, Infoseek, Google dan Altavista, tetapi untuk lingkup yang lebih kecil seperti, intranet atau jaringan kampus). Beberapa fitur ht://Dig :
1. Penelusuran Intranet. ht://Dig mempunyai kemampuan untuk mengindeks dan menelusur ke beberapa server sekaligus pada sebuah jaringan dengan "berakting" sebagai browser web.
2. Gratis. ht://Dig dirilis dengan lisensi GNU General Public License.
3. Mendukung Robot Exclusion. Robot Exclusion adalah suatu standar yang digunakan agar bagian-bagian tertentu dari suatu situs web tidak diindeks dan ditelusur oleh Search Engine Robot.
4. Penelusuran Ekspresi Boolean. Mendukung penelusuran kompleks menggunakan logika Boole.
5. Hasil penelusuran yang bisa dikustom. Output penelusuran bisa dibuat sesuai dengan kebutuhan dengan menyediakan template HTML.
6. Fuzzy Searching. Penelusuran bisa dilakukan menggunakan berbagai algoritma yang bisa dikustom, seperti: exact, soundex, metaphone, common word endings, sinonim.
7. Menelusur file HTML dan teks. Bisa menelusur dokumen HTML dan file teks.
8. Penambahan kata kunci (keyword) ke dokumen HTML. Kata kunci bisa ditambahkan ke dokumen HTML dan tidak akan terlihat sewaktu dokumen dibuka.
9. Peringatan lewat e-mail untuk dokumen yang sudah expired.
10. Bisa mengindeks server yang diproteksi dengan username dan password.
11. Dengan menggunakan external parser, ht://Dig juga mampu mengindeks file PDF (Portable Document Format) dan Microsoft Word.

Instalasi Apache Web Server dan ht://aDig
Penulis menggunakan OS FreeBSD 3.3. Tetapi cara yang penulis sebutkan disini tidaklah untuk FreeBSD saja. Penulis juga juga sudah melakukan ujicoba pada Linux RedHat dan berhasil dengan baik. Web server yang digunakan adalah Apache.
Sekarang pertama kali, download file source Apache Web Server dari www.apache.org. Misalnya apache_x.x.x.tar.gz. Simpan di direktori /temp. (Anda harus login sebagai "root" untuk melakukan ini semua).
Kemudian buat direktori /usr/local/apache:

# mkdir /usr/local/apache

Masuk ke direktori /temp:

# cd /temp

Ekstrak file yang sudah di download:

# gunzip -d -c apache_x.x.x.tar.gz | xvf -

Masuk ke direktori apache_x.x.x:

# cd apache_x.x.x

Lakukan langkah-langkah berikut ini:

# ./configure --prefix=/usr/local/apache
# make
# make install

Sekarang, anda bisa menjalankan web server apache:

# cd /usr/local/apache/bin
# ./apachectl start

Kedua, download ht://Dig dari www.htdig.org. Misal, nama file-nya htdig-x.x.x.tar.gz. Simpan di direktori /temp.
Dan buat direktori /usr/local/htdig:

# mkdir /usr/local/htdig

Masuk ke direktori /temp:

# cd /temp

Ekstrak file yang sudah di download:

# gunzip -d -c htdig-x.x.x.tar.gz | xvf -

Masuk ke direktori htdig-x.x.x:

# cd htdig-x.x.x

Lakukan langkah-langkah berikut ini:

# ./configure --prefix=/usr/local/htdig

Lakukan sedikit perubahan pada file CONFIG dengan editor favorit anda (saya suka vi editor):

# vi CONFIG

Ubah konfigurasi:

CGIBIN_DIR = /usr/local/htdig/cgi-bin
IMAGE_DIR = /usr/local/htdig/htdocs/htdig
SEARCH_DIR = /usr/local/htdig/htdocs/htdig

Kemudian setelah disimpan, lakukan:

# make
# make install

Ok, Apache dan ht://Dig sudah terinstall dengan baik. Sekarang kita lakukan sedikit perubahan pada file konfigurasi Apache.
Masuk ke direktori /usr/local/apache/conf:

# cd /usr/local/apache/conf

Buka file httpd.conf dengan editor yang biasa anda pakai:

# vi httpd.conf

Kemudian tambahkan:

Alias /htdig/ "/usr/local/htdig/htdocs/htdig/"

ScriptAlias /htdig-cgi/ "/usr/local/htdig/cgi-bin/"


AllowOverride None
Options ExecCGI

Setelah disimpan, saatnya anda merestart Apache:

# /usr/local/apache/bin/apachectl restart

Bagaimana ht://Dig Bekerja?
Ada 3 proses yang dilakukan oleh ht://Dig, yaitu: Digging, Merging, dan Searching. Digging adalah proses membuat database dari dokumen-dokumen yang diindeks. Merging adalah proses konversi agar indeks bisa dicari dengan cepat. Searching adalah proses penelusuran dokumen-dokumen melalui database yang telah dibuat.
Untuk penulisan artikel ini, penulis akan mencoba membuat database untuk manual Apache yang juga diinstal ketika instalasi program Apache. Misalnya, situs kita mempunyai alamat IP 192.168.2.1, maka biasanya manual Apache terletak di http://192.168.2.1/manual/. Pada halaman index.html dari manual tersebut, terdapat link untuk melakukan penelusuran kata kunci manual Apache secara free-text ke situs web www.apache.org. Sekarang kita akan buat fasilitas penelusuran untuk manual Apache yang tidak kalah ok tanpa harus koneksi ke internet. Sekarang kita akan mengubah link di dokumen index.html dulu menuju situs web kita.

# cd /usr/local/apache/htdocs/manual
# vi index.html

Kemudian ubah:

menjadi

Buat direktori khusus untuk database yang akan kita buat:

# mkdir /usr/local/htdig/db/apache_manual

Masuk ke direktori konfigurasi ht://Dig:

# cd /usr/local/htdig/conf

Buat file konfigurasi dari template:

# cp htdig.conf apache_manual.conf

Edit apache_manual.conf:

# vi apache_manual.conf

Lakukan beberapa perubahan seperti dibawah ini:

database_dir : /usr/local/htdig/db/apache_manual/
start_url : http://192.168.2.1/

Bila kita ingin ht://Dig mengindeks beberapa server sekaligus, anda bisa masukkan beberapa URL lain dan pisahkan dengan spasi:

start_url : http://192.168.2.1/ http://192.168.2.3/ http://www.situsku.com/

Sekarang edit file search.html:

# cd /usr/local/htdig/htdocs/htdig
# vi search.html

Lakukan beberapa perubahan:
menjadi

Perubahan metode Post menjadi Get hanyalah untuk memudahkan kita dalam proses debug. Perubahan lainnya:

menjadi

Tambahkan langkah-langkah berikut,

Proses Digging:

# /usr/local/htdig/bin/htdig -c apache_manual.conf

Proses Merging:

# /usr/local/htdig/bin/htmerge -c apache_manual.conf

Selesai sudah proses yang paling sederhana dari ht://Dig, lihat dengan browser, apa semua ini bekerja.

(Gambar 1. Gambar file "index.html" manual Apache)
(Gambar 2. Gambar file "search.html" htdig)
(Gambar 3. Gambar hasil penelusuran ht://Dig dengan keyword "Virtual Host")

Membuat Robot Exclusion
Salah satu masalah dengan model pengindeksan dokumen web yang menggunakan Robot atau webcrawler adalah terindeksnya dokumen-dokumen yang tidak diinginkan. Untuk itu dibuatlah suatu standar yang mencegah diindeksnya dokumen-dokumen web oleh webcrawler atau sering disebut dengan Robot Exclusion. Untuk tahu lebih lanjut mengenai Robot Exclusion Standard, silahkan baca di http://info.webcrawler.com/mak/projects/robots/norobots.html.
Sekarang kita akan buat contoh Robot Exclusion sederhana untuk sebuah situs web (misalnya: www.coba-coba.com), yang tidak membolehkan webcrawler untuk mengindeks direktori "/data/rahasia/" dan direktori "/percobaan/" dan file "index.html" yang terdapat di root Direktori.
Pertama, masuk ke root direktori web dan buatlah file teks dan beri nama "robots.txt".

# cd /usr/local/apache/htdocs
# vi robots.txt

Kemudian tambahkan:

User-agent: *
Disallow: /data/rahasia/
Disallow: /percobaan/
Disallow: /index.html

Mengganti Microsoft Index Server dengan ht://Dig
Seperti sudah dijelaskan diawal tulisan ini, ht://Dig, dengan bantuan external parser, juga dapat mengindeks file-file MS-Word, RTF (Rich Text Format), Postscript, WordPerfect, dan PDF. Sudah ada yang pake MS Index Server? Fungsi dan cara kerja Index Server mirip dengan ht://Dig. Cuma ada beberapa perbedaan:
1. Setting Index Server jauh lebih rumit daripada ht://Dig
2. Karena hanya jalan di platform NT, maka persyaratan hardwarenya juga lebih berat.
3. Index Server hanya mampu mengindeks server dimana ia diinstall, sedangkan ht://Dig mampu mengindeks pada beberapa server sekaligus.
4. Jenis file yang mampu diindeks ht://Dig lebih banyak.

Sekarang kita mulai coba menggunakan external parser untuk mengindeks file PDF dan Word. Untuk PDF converter bisa menggunakan Xpdf dari http://www.foolabs.com/xpdf/download.html (penulis mendowload xpdf-0.91.tgz), dan untuk Word converter gunakan catdoc yang bisa didownload di http://www.fe.msk.ru/~vitus/catdoc/ (penulis mendownload catdoc-0.90.3.tar.gz). Simpan semuanya di direktori /temp
Sekarang buat direktori xpdf dan catdoc di /usr/local:

# mkdir /usr/local/xpdf
# mkdir /usr/local/catdoc

Instalasi xpdf:

# cd /temp
# gunzip -d -c xpdf-0.91.tgz | tar xvf -
# cd xpdf-0.91
# ./configure --prefix=/usr/local/xpdf
# make
# make install

Instalasi catdoc:

# cd /temp
# gunzip -d -c catdoc-0.90.3.tar.gz | tar xvf -
# cd catdoc-0.90.3
# ./configure --prefix=/usr/local/catdoc
# make
# make install

Kemudian download file "conv_doc.pl" di http://www.scrc.umanitoba.ca/htdig/rpms dan simpan di direktori /usr/local/bin. Kemudian edit file tersebut:

# vi conv_doc.pl

Lakukan sedikit perubahan:

$CATDOC = "/usr/local/catdoc/bin/catdoc";
$CATPDF = "/usr/local/xpdf/bin/pdftotext";
$PDFINFO = "/usr/local/xpdf/bin/pdfinfo";

Kemudian masuk ke direktori konfigurasi ht://Dig:

# cd /usr/local/htdig/conf

Kemudian indeks file konfigurasi mana yang ingin anda edit (misalnya file apache_manual.conf) dan tambahkan:

external_parsers: application/msword->text/html /usr/local/bin/conv_doc.pl \
application/pdf->text/html /usr/local/bin/conv_doc.pl

Jangan lupa, setiap kita membuat data base baru, jangan lupa untuk mengubah nilai dari variabel "value" pada file "search.html". Misalnya, pada contoh diatas, nama file konfigurasi adalah "apache_manual.conf", maka nilai variabel "value" adalah "apache_manual". Selanjutnya, lakukan proses Digging dan Merging seperti biasa.

1 komentar:

Muhammad Chandra says:

ok sob. .
mantab informasinya. .
terima kash. .