ABSTRACT
Java Search Tool is a search engine application built on Java programming
language. Java Search Tool give simple approach for Inverted File Indexing and
Vector Space Model algorithms for information retrieval core engine. Beside the
fact that Java Search Tool is dekstop search application, Java Search Tool also
provide native integration with host operating system indexing service and also
provide search feature through GoogleBase services. Native integration only
available for UNIX based operating system including Mac OS X. While for
GoogleBase services search, Java Search Tool only provide GoogleBase directory
search and video search though YouTube feeds service.
Java Search Tool tries to implement indexing process using multi threading
instance. Some of data structures used on base Inverted File Indexing algorithm
change into Hashtable implementation rather than LinkedList. Modification also
apply to Vector Space Model so it can improve similarity measurement for phrase
based search. To accomodate indexing process for all documents in hard drive,
Java Search Tool also uses some of text or metadata extraction library including,
Apache POI for Microsoft Office PowerPoint and Word 2000/XP compatible
documents, PDFBox for pdf to text extraction and also JID3Tag for MP3 ID3Tag
extraction. All library used by Java Search Tool is open source based and free to
use with each GNU based licenses.
For such system such as Mac OS X 10.5, Java Seach Tool also provide
QuickLook for previewing document and some cool GUI experience. Beside that,
Java Search Tool also provide logging feature and embedded cool help system to
provide user with easy to use and fully documented application.
Keywords: java, search, vector space model, pemodelan ruang vektor, inverted
DAFTAR ISI
!"
viii!"
x!"
xii!"
xivDAFTAR GAMBAR
I
!
""#Bab I :
PENDAHULUAN
!
Pada bagian ini akan dijelaskan mengenai gambaran umum mengenai
pengembangan aplikasi Java Search Tool meliputi latar belakang, tujuan
pembuatan aplikasi serta fitur dasar dan batasan pengembangan aplikasi.
I.1.
Latar Belakang
Saat ini perkembangan teknologi media penyimpanan komputer telah
berkembang dengan pesat, sehingga memungkinkan penggunanya untuk
menyimpan dokumen dalam jumlah besar. Sementara itu, dengan
banyaknya dokumen yang tersimpan, secara tidak langsung pengguna akan
mengalami kesulitan dalam mencari dokumen yang dibutuhkan pada saat
membutuhkannya. Di samping itu, perkembangan teknologi
search engine
memungkinkan untuk melakukan proses
indexing
dan pencarian data yang
ada dalam media penyimpanan ataupun melalui jaringan internet.
Oleh karena itu penulis memilih untuk mengembangkan aplikasi
search
engine
yang memungkinkan penggunanya untuk mencari dokumen yang
terdapat pada komputer ataupun melalui jaringan internet.
I.2.
Tujuan
Tujuan dari proyek tugas akhir ini adalah mengembangkan aplikasi
search
engine
menggunakan metode
inverted file indexing
dan metode pencarian
ruang
vector
yang juga mendukung pencarian secara
native
melalui
indexing service
pada
host operating system
dan mendukung pencarian
melalui jaringan internet Google. Aplikasi dikembangkan dengan
menggunakan bahasa pemrograman berorientasi objek
Java
.
I.3.
Gambaran Umum
Pada saat pertama kali digunakan, aplikasi akan meminta pengguna untuk
melakukan konfigurasi aplikasi umum seperti apakah pencarian akan
atau dengan membuat
index
baru. Apabila pengguna memilih untuk
membuat
index
baru, maka pengguna akan diminta untuk memulai proses
pembuatan
index
.
Setelah
index
dibuat, pengguna dapat memulai menggunakan fitur
pencarian. Aplikasi akan membaca masukan dari pengguna berupa kata
kunci dari dokumen yang akan dicari dan lokasi pencarian (komputer atau
melalui Google). Setelah proses pencarian selesai dilakukan, hasil dari
pencarian akan ditampilkan dalam bentuk tabel berisi keterangan nama
dokumen, tanggal modifikasi terakhir dan lokasi dimana dokumen
disimpan. Pengguna juga dapat memasukkan
bookmark
hasil pencarian
ataupun mengatur
bookmark
yang telah ada. Fitur
bookmark
ini
memungkinkan pengguna untuk melihat ulang hasil pencarian yang
disimpan dengan lebih cepat.
Aplikasi ini juga memiliki fitur-fitur yang memungkinkan pengguna untuk
membuka direktori tempat dokumen atau membuka dokumen dengan
aplikasi lain yang terdapat pada sistem operasi yang digunakan. Untuk
pengguna Mac OS X versi 10.5 atau lebih, tersedia fitur untuk melakukan
preview
dokumen menggunakan QuickLook.
I.4.
Batasan Masalah
Batasan-batasan dalam pengembangan aplikasi ini adalah:
•
Integrasi pencarian menggunakan
native
indexing service
hanya dapat
dilakukan pada sistem operasi berbasis UNIX yang mendukung perintah
locate
atau
mdfind
,
•
Pencarian melalui Google hanya mendukung pencarian terhadap
direktori GoogleBase dan
YouTube
,
•
Pencarian terhadap
metadata
dan isi dokumen hanya mendukung
dokumen dengan format teks, PDF, Microsoft Office 2000/XP, dan
I
!
""%•
Update index
dilakukan secara manual oleh pengguna,
•
Stop word list
menggunakan bahasa Inggris dari Paice/Husk
stemmer
.
I.5.
Detail Teknis
Berikut adalah beberapa detail teknis dari aplikasi ini:
•
Pemrosesan dokumen tipe Microsoft Office 2000/XP dilakukan dengan
mengunakan
library
Apache POI (Poor Obfuscation Implementation)
versi 3.0.2 yang memiliki lisensi Apache
License
,
•
Pemrosesan dokumen tipe PDF menggunakan
library
PDFBox versi
0.7.3 yang memiliki lisensi PDFBox
License
,
•
Pemrosesan metadata untuk dokumen gambar menggunakan
package
javax.imageio
dari JDK,
•
Pemrosesan
ID3Tag
untuk dokumen MP3 dilakukan menggunakan
library
JID3 versi 0.4.6 yang memiliki lisensi GNU GPL,
•
Pengenalan
mime type
dilakukan dengan menggunakan
library
MimeUtil yang memiliki lisensi GNU GPL,
•
Pencarian terhadap GoogleBase dilakukan dengan menggunakan
parser
XML dari JDK,
•
Metode
indexing
menggunakan
inverted file indexing
,
•
Metode pencarian menggunakan pemodelan ruang vector,
•
Runtime
untuk pencarian menggunakan
index
native
sistem operasi
menggunakan Spotlight pada Mac OS X versi 10.4 atau lebih, untuk
sistem operasi UNIX lainnya menggunakan
locate
,
•
Runtime
untuk melakukan
preview
dokumen pada sistem operasi Mac
OS X versi 10.5 atau lebih menggunakan AppleScript dan QuickLook
•
Dapat berjalan dengan baik pada semua sistem operasi yang didukung
oleh Java SE atau JRE minimal versi 1.6.0.
I.6.
Definisi dan Singkatan
Bagian ini menjelaskan istilah-istilah teknis dan singkatan-singkatan yang
digunakan pada laporan ini. Untuk istilah-istilah teknis yang terdapat pada
laporan ini ditulis dengan cetak miring. Untuk istilah atau singkatan yang
merujuk pada suatu merek dagang atau nama fitur dari suatu merek dagang
akan ditulis dengan huruf pertama kapital tanpa cetak miring.
I.6.1.
JRE(Java Runtime Environment) atau JVM
Aplikasi dasar yang memungkinkan aplikasi yang dibuat dalam bahasa
pemrograman
Java
dalam berjalan pada setiap sistem operasi dan berbagai
jenis arsitektur perangkat keras. Aplikasi Java Search Tool dikembangkan
menggunakan teknologi Java SE(Standard Edition) yang merupakan
Java
Runtime
untuk aplikasi
desktop
.
I.6.2.
JDK(Java Development Kit)
Kumpulan dari
Compiler
dan
library
yang dikembangkan oleh SUN
Microsystem untuk mengembangkan aplikasi
desktop
berbasis bahasa
pemrograman
Java
.
Aplikasi
Java
Search
tool
dikembangkan
menggunakan
JDK
versi 1.6.
I.6.3.
Search Engine
Aplikasi yang memungkinkan penggunanya untuk dapat melakukan proses
pencarian
informasi
berdasarkan
kata
kunci
yang
diberikan.
Pengembangan aplikasi Java Search Tool merupakan salah satu
search
engine
.
I.6.4.
Inverted File Indexing
Salah satu metode untuk melakukan proses
indexing
yang memungkinkan
pembuatan dokumen
index
. Metode ini membagi dokumen
index
menjadi
I
!
""'keterangan mengenai jumlah dokumen dan nomor dokumen yang
memiliki kata yang terdapat dalam
lexicon
.
Inverted list
berisi keterangan
spesifik per dokumen terhadap kata yang terdapat dalam
lexicon
.
Sedangkan
lexicon
sendiri berisi keseluruhan kata yang ditemukan dengan
alamat dokumen yang memiliki kata tersebut.
I.6.5.
Vector Space Model
atau Pemodelan Ruang Vektor
Salah satu metode pencarian dokumen dengan menggunakan pendekatan
aljabar. Metode ini akan memproses kata kunci dan dokumen
index
yang
ada dengan pemodelan ruang vektor multi dimensi. Proses penilaian
dokumen dilakukan berdasarkan nilai kemiripan yang didapat dari
penghitungan bobot dokumen terhadap kata kunci. Metode ini merupakan
metode yang sangat umum digunakan di banyak
search engine
termasuk
Java Search Tool.
I.6.6.
Index
Dokumen ataupun
database
yang berisi informasi mengenai
dokumen-dokumen yang diperoleh melalui proses
indexing
dengan menggunakan
metode tertentu. Java Search Tool dapat membuat dokumen
index
ini
dengan menggunakan metode
inverted file indexing
.
I.6.7.
Google dan GoogleBase
Aplikasi berbasis
web
yang berfungsi sebagai
web
search engine
dikembangkan oleh Google, inc. Sementara itu, GoogleBase merupakan
suatu fitur yang dikembangkan oleh Google untuk menyediakan informasi
berupa produk, pekerjaan, jasa dan lain sebagainya. Informasi yang
disediakan oleh GoogleBase merupakan data dari klien ataupun
business
partner
dari Google sebagai sarana promosi bagi perusahaan tersebut.
I.6.8.
Mime Type
Informasi tipe dokumen yang disimpan pada
header
suatu dokumen
Java Search Tool memungkinkan pengenalan
mime type
menggunakan
library
MimeUtil.
I.6.9.
ID3Tag, ID3Tag versi 1.0 dan ID3Tag versi 2.3
Standar informasi tambahan yang dapat dimasukkan ke dalam dokumen
audio dan video. ID3Tag memungkinkan untuk memasukkan informasi
spesifik seperti
title
,
artist
,
publisher, DRM
dan bahkan dokumen gambar
pada dokumen audio dan video. Untuk ID3Tag versi 1.0, informasi yang
bisa disimpan hanya informasi lagu sederhana seperti
singer
,
composer
,
title
,
album
dan tahun produksi. Sementara untuk ID3Tag versi 2.3,
informasi seperti Digital Rights Management, dokumen gambar, lirik lagu
dan informasi pembelian dapat disimpan dalam ID3Tag. Aplikasi Java
Search Tool memungkinkan pencarian ID3Tag terhadap dokumen audio
dengan format MP3 menggunakan
library
JID3 versi 0.4.6.
I.6.10.
Runtime atau service
Aplikasi dasar yang pada umumnya dijalankan secara otomatis pada saat
sistem operasi dijalankan. Cara akses untuk setiap
runtime
atau
service
ini
diatur oleh masing-masing sistem operasi dan memiliki perlakuan yang
berbeda-beda. Aplikasi Java Search Tool menggunakan
runtime
atau
service
tertentu untuk metode pencarian menggunakan
index
native
sistem
operasi.
I.6.11.
Native dan native indexing service
Native
dalam dokumen ini merujuk pada kemampuan aplikasi untuk
melakukan akses terhadap proses atau
runtime
yang terdapat pada sistem
operasi dimana aplikasi dijalankan. Sementara itu,
native indexing service
merujuk pada
runtime
atau
service
yang bertanggung jawab untuk
melakukan proses
indexing
ataupun pencarian dokumen yang ditangani
I
!
"")I.6.12.
Native Library
Merupakan
library
ataupun kelas-kelas yang berasal dari sistem operasi
untuk mengangani proses-proses tertentu. Pada umumnya
native library
ditulis dalam bahasa pemrograman sesuai dengan bahasa pemrograman
yang digunakan untuk membuat sistem operasi tersebut. Pada laporan ini,
semua
native library
merujuk pada JNILIB atau
library
yang ditulis
menggunakan bahasa pemrograman C++ yang dapat dipanggil melalui
bahasa pemrograman Java.
I.6.13.
AppleScript
Suatu bahasa pemrograman sederhana yang dikembangkan oleh Apple, inc
untuk melakukan otomatisasi tugas-tugas sederhana dan eksekusi perintah.
AppleScript merupakan fitur utama pada sistem operasi Mac OS X dan
digunakan oleh Java Search Tool untuk melakukan eksekusi perintah
konsol agar dapat melakukan
preview
dokumen secara
native
oleh
QuickLook
.
I.6.14.
QuickLook
Runtime
yang memungkinkan pengguna untuk dapat melakukan
preview
dokumen tanpa harus membuka aplikasi yang dihubungkan dengan tipe
dokumen tersebut.
QuickLook
merupakan salah satu fitur utama yang
terdapat pada sistem operasi Mac OS X versi 10.5 dengan kode produksi
Leopard
.
QuickLook
mendukung sistem
plugin
yang membuat
runtime
ini
dapat mendukung hampir semua tipe data. Aplikasi Java Search Tool
mendukung penggunaan
runtime
ini untuk memudahkan pengguna dalam
melakukan
preview
dokumen hasil pencarian.
I.6.15.
Spotlight
Aplikasi
search engine
yang mulai dikenalkan mulai dari sistem operasi
Mac OS X versi 10.4 yang memungkinkan penggunanya untuk mencari
dokumen dengan mudah dan cepat.
Spotlight
merupakan aplikasi yang
mengakses
runtime
ini untuk melakukan pencarian dengan menggunakan
index native
dari
runtime Spotlight
.
I.6.16.
Locate
Aplikasi yang bersifat
runtime
yang memungkinkan penggunanya
melakukan pencarian dokumen. Aplikasi ini umumnya secara otomatis
terdapat pada sistem operasi berbasis UNIX seperti BSD, Linux,
OpenSolaris dan Mac OS X. Java Search Tool menggunakan
runtime
ini
untuk melakukan pencarian secara
native
pada sistem operasi berbasis
UNIX selain Mac OS X(menggunakan
Spotlight
).
I.6.17.
YouTube
Merupakan aplikasi berbasis
web
yang menyediakan jasa untuk berbagi
dokumen video yang dapat diakses oleh penggunanya melalui
web
streaming
. Aplikasi Java Search Tool memungkinkan pengguna untuk
melakukan pencarian dokumen video yang terdapat pada
YouTube
.
I.6.18.
DTrace
Merupakan bahasa pemrograman D yang dikembangkan oleh SUN
Microsystems, inc untuk melakukan
tracing
atau
monitoring
sistem
operasi keseluruhan atau suatu aplikasi yang sedang berjalan secara
low
level
atau berinteraksi langsung dengan
kernel
sistem operasi tersebut.
Pertama kali diimplementasikan pada sistem operasi Solaris 10. Saat ini
beberapa sistem operasi modern berbasis
kernel
BSD (Berkeley System
Distribution) dengan Mach
kernel
3.0 telah mengimplementasikan DTrace
menjadi bagian dari
kernel
sistem operasi tersebut.
DTrace dapat digunakan secara
code level
pada bahasa pemrograman
umum seperti C++, Objective-C dan Java dengan metode
mixed mode
.
Selain itu dapat juga dijalankan sebagai
script
terpisah yang ditujukan
I
!
""+I.6.19.
Apple Instruments
Merupakan aplikasi
development
yang terdapat pada sistem operasi Mac
OS X versi 10.5 ke atas, yang memungkinkan para pengembang untuk
merekam suatu aksi dan melakukan pengawasan terhadap penggunaan
resources
pada sistem. Aplikasi ini melakukan pengawasan
resources
dengan menggunakan DTrace yang telah disediakan maupun
script
DTrace yang didefinisikan oleh pengguna.
I.6.20.
I/O dan I/O Usage
Merupakan suatu kondisi yang menggambarkan penggunaan
input
dan
output
berupa transfer data dari suatu aplikasi terhadap alat
input
dan
output
. Pada umumnya persentase I/O Usage ditujukan terhadap aktivitas
media penyimpanan
non volatile
atau
disk drive
. Persentase nilai
dipengaruhi oleh kegiatan pembacaan, penulisan dan proses baca-tulis
secara bersamaan.
I.6.21.
CPU dan CPU Usage
CPU atau Central Processing Unit merupakan suatu alat utama dalam
sistem komputer yang berfungsi sebagai alat hitung dan
interpreter
untuk
memproses setiap proses atau
thread
yang sedang dijalankan oleh sistem
operasi ataupun suatu aplikasi. CPU Usage menggambarkan utilisasi
penggunaan CPU saat menjalankan suatu proses dalam nilai persentase.
Pada umumnya, persentase nilai CPU Usage digambarkan dengan jumlah
CPU dikalikan 100%. Nilai CPU usage maksimal untuk mesin dengan satu
CPU adalah 100%, mesin dengan dua CPU adalah 200% dan seterusnya.
I.6.22.
Object Allocation
Merupakan suatu proses dimana sebuah aplikasi melakukan proses
penciptaan objek dan mengalokasikan penggunaan memori pada sistem
I.6.23.
Memory Leak
Suatu kondisi dimana suatu aplikasi tidak melepas alokasi data di memori
saat suatu objek sudah tidak digunakan atau bahkan aplikasi tersebut
sudah tidak berjalan. Hal ini menyebabkan
resource
di memori tidak dapat
dipakai oleh proses atau aplikasi lainnya yang berakibat memperlambat
kinerja sistem dan dapat menyebabkan kelumpuhan sistem.
I.6.24.
Garbage Collector
Merupakan sebuah
bot
ataupun
runtime
yang dijalankan oleh sistem atau
runtime
bahasa pemrograman untuk melakukan pembersihan data di
memori dan melepas
resource
yang sudah tidak dipakai. Hal ini untuk
menghindari suatu aplikasi atau proses menyebabkan
memory leak
.
Biasanya ditulis dalam bahasa pemrograman
assembly
dan terdapat pada
sistem operasi modern ataupun pada
runtime
bahasa pemrograman.
I.7.
Struktur Laporan
Laporan tugas akhir ini terdiri dari enam bab dengan penjelasan sebagai
berikut:
•
Bab I. Pendahuluan
Gambaran umum tentang aplikasi yang dikembangkan pada tugas akhir
ini. Menjelaskan latar belakang pemilihan topik, istilah - istilah khusus
serta pembatasan cakupan masalah yang akan diimplementasikan
pada aplikasi.
•
Bab II. Spesifikasi Produk
Gambaran teknis dari aplikasi, berisi gambaran keseluruhan aplikasi dan
spesifikasi produk.
•
Bab III. Desain Perangkat Lunak
Berisi pemodelan rancangan aplikasi dalam bentuk diagram-diagram
I
!
##""•
Bab IV. Implementasi Desain
Berisi implementasi pengembangan aplikasi dalam bentuk bahasa
pemrograman dengan mengacu pada desain perangkat lunak yang ada
pada bab 3.
•
Bab V. Pengujian
Membahas metode pengujian aplikasi untuk kemudian mengambil
kesimpulan mengenai fungsionalitas produk akhir dan hasil yang dicapai
serta perbandingan dengan gambaran yang tercantum pada bab 1 dan
bab 2.
•
Bab VI. Kesimpulan dan Saran
Berisi kesimpulan dari pengembangan aplikasi dan saran-saran untuk
Bab VI :
Kesimpulan dan Saran
Bab ini menjelaskan mengenai kesimpulan dan saran pengembangan aplikasi serta
keterkaitannya dengan hasil pengujian dan evaluasi aplikasi.
VI.1.
Saran Pengembangan
Berikut adalah saran-saran pengembangan aplikasi:
•
Menyediakan fitur untuk
partial indexing
sehingga memungkinkan
untuk proses
update index
tanpa harus mengulang proses
indexing
dari
awal,
•
Metode untuk
indexing
sebaiknya diganti dengan menggunakan
algoritma
indexing
genetik.
VI.2.
Keterkaitan antara Kesimpulan dan Hasil Evaluasi
Tujuan dari pengembangan aplikasi ini adalah untuk membuat aplikasi
search engine
berbasis pada
inverted file indexing
dan metode pencarian
ruang vektor yang juga mendukung pencarian melalui
native indexing
service
sistem operasi dan pencarian melalui jaringan internet Google.
Setelah melakukan pengujian terhadap fitur-fitur utama, aplikasi mampu
melakukan proses
indexing
, implementasi
vector space model
, integrasi
dengan sistem operasi dan pencarian melalui Google dengan cukup baik.
Kekurangan aplikasi ini terdapat pada pencarian dengan kata kunci berupa
frasa 3 kata atau lebih, hasil yang ditampilkan kurang akurat.
VI.3.
Keterkaitan antara Saran dan Hasil Evaluasi
Setelah melakukan proses pengujian maka disarankan untuk pengembangan
aplikasi ini adalah perbaikan dalam implementasi algoritma
vector space
model
ataupun mengganti algoritma pencarian dengan algoritma genetik.
Selain itu, proses
indexing
harus dioptimalkan kembali agar penggunaan
VI
!
###""VI.4.
Rencana Perbaikan terhadap Saran yang Diberikan
Langkah-langkah yang diambil untuk pengembangan aplikasi ini adalah:
•
Mengganti algoritma pencarian dengan algoritma pencarian genetik,
•
Menggunakan JNI
library
untuk proses
indexing
.
Semua langkah-langkah pengembangan di atas dapat dilakukan oleh setiap
pengembang aplikasi berbasis Java ataupun C++ mengingat aplikasi ini
Referensi
[Harold 1999] Elliotte Rusty Harold. “Java IO”. O’Reilly (1999).
[Harold 2002] Elliotte Rusty Harold. “Processing XML with Java”.
Addison-Wesley (2002).
[Lafore 1998] Robert Lafore. “Data Structures and Algorithms in Java”. Sams
(1998).
[Witten, Moffat and Bell 1999] Ian H. Witten, Alistair Moffat and Timothy C Bell
“Managing Gigabytes second edition”. Academic Press (1999).
[Apache 2008] Apache Software Foundation. “Apache POI Library”. Apache
Software Foundation (17 April 2008).
http://poi.apache.org
[Berkeley 2008] UC Berkeley. “Information Retrieval Courses Material”.
Computer
Science
Department
of
UC
Berkeley
(17
April
2008).
http://people.ischool.berkeley.edu/~hearst/irbook/
[Blinkenlights 2008] Blinkenlights. “JID3 Library”. Blinkenlights (17 April
2008).
http://jid3.blinkenlights.org/
[Apple 2008] Apple, inc. “Apple Human Interface Guidelines”. Apple, inc (17
April 2008).
http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGu
!
##%""[Google 2008] Google, inc. “Google Data API. Google Code”. Google (17 April
2008)
http://code.google.com/apis/gdata/client-java.html
[SUN 2008] SUN Microsystems. “The Java Tutorials”. SUN Microsystem (17
April 2008).
http://java.sun.com/docs/books/tutorial
[O’Neill 2008] Christopher O’Neill. “Paice/Husk Stemmer”. Lancaster University
Computer Science Department (17 April 2008).
http://www.comp.lancs.ac.uk
[PDFBox 2008] PDFBox org. “PDFBox Library”. PDFBox org (17 April 2008).