My First Date with Lucene
oleh:
Muhammad Zidny Naf'an
Mahasiswa UIN Syarif Hidayatullah Jakarta, Indonesia
Interested in Information Retrieval System.
Email: zidny_nafan@yahoo.com
Pendahuluan
Lucene search engine adalah suatu library yang berbasis open source. Dibangun oleh Apache yang sekarang ini telah menginjak pada versi ke 3.1. lucene dapat melakukan peng-indeks-an pada berbagai tema informasi dan dapat melakukan pencarian pada berbagai kriteria.
Kemampuan yang dimiliki Lucene seperti yang ditulis oleh Brian Goetz pada situs javaworld.com adalah sebagai berikut:
- Kemmpuan pencarian pada arsip-arsip email.
- Mencari dokumen secara online
- Kemampuan pencarian halaman web
- Mencari website
- Mencari konten pada suatu dokumen
- Kemampuan dalam mengetahui versi dokumen
- Pencarian berita
Lucene memiliki beberapa kelas “unggulan” yang ada didalamnya yaitu sebagai berikut:
- ü Document. Kelas ini merepresentasikan dokumen di Lucene. Indexing dilakukan pada objek Document dan akan dikembalikan berupa objek saat dilakukan pencarian.
- ü Field. Kelas ini merupakan section dari Docment. Objek dari kelas Field akan berisi nama untuk section dan data.
- ü Analyzer. Kelas Analyzer merupakan abstract class yang digunakan untuk menyediakan sebuah interface yang akan mengambil dokumen dan menjadikan isi dokumen menjadi token-token yang dapat dilakukan pengindeksan. Implementasi yang paling umum digunakan adalah StandardAnalyzer.
- ü IndexWriter. Digunakan untuk membuat dan mengatur indeks.
- ü IndexSearcher. Berfungsi untuk mencari indeks.
- ü QueryPaser. Kelas ini akan membuat parser yang dapat melakukan pencarian pada indeks.
- ü Query. Merupakan kelas abstrak yang memuat tentang kriteria pencarian yang dibuat oleh kelas QueryParser.
- ü Hits. Memuat objek Document yang dikembalikan oleh kelas Query berdasarkan indeks yang ada.
Lucene terbaru tidak hanya mendukung bahasa Inggris saja, tetapi ada puluhan bahasa di dunia yang didukung oleh Lucene. Seperti yang diketahui bersama bahwa korpus tidaklah hanya terbatas dalam bahasa Inggris, korpus dalam bahasa lainpun sangat banyak. Dukungan bahasa ini yaitu kemampuan Lucene untuk melakukan stemming, analisis, dan tokenisasi. Bahasa yang didukung adalah sebagai berikut:ü Arab ü Bulgaria ü Brazil ü Katala ü CJK (Cina, Jepang, dan Korea) ü Cina ü Ceko ü Danish ü Jerman | ü Inggris ü Spanyol ü Basque ü Persia ü Finnish ü Perancis ü Gallician ü Hindi ü Hungaria ü Armenia ü Indonesia | ü India ü Belanda ü Norwegia ü Portugis ü Roma ü Rusia ü Swedia ü Thailand ü Turki ü Yunani |
Desain Mesin Pencari Sederhana Menggunakan Lucene
Library Lucene yang lengkap sangat membantu developer untuk membuat suatu mesin pencari. Desain mesin pencari ini yang diambil dari buku Lucene in Action 2nd edition adalah sebagai berikut:
Dokumen yang akan digunakan sebagai korpus bertipe doc yang diambil dari artikel pada situs www.nu.or.id.
Indexing
Indexing dilakukan pada seluruh dokumen yang ada pada folder korpus. Namun setelah penulis coba, ternyata hanya file dengan format doc sajalah yang akan dibuat index-nya. Indexing dilakukan dengan menggunakan dua kelas yaitu kelas IndexFiles dan FileDocument. Kedua kelas ini dimodifikasi dari file demo yang ada pada paket Lucene. Hasil proses indexing ini akan disimpan di dalam folder index. Jika dikemudian waktu dokumen korpus mengalami perubahan maka folder index dihapus terlebih dahulu, selanjutnya eksekusi kelas IndexFiles.
Kelas IndexFiles akan menginisialisasi folder korpus yang akan digunakan. Kemudian setiap file dalam folder tersebut akan diambil satu per satu jika format file didukung oleh Lucene. Tiap-tiap file akan dikirim ke method Document pada kelas FileDocument untuk dibuat index-nya.
Hasil output dari kelas IndexFiles saat di-eksekusi yaitu:
Indexing to directory 'index'...
adding C:\korpus\1.doc
adding C:\korpus\2.doc
adding C:\korpus\3.doc
adding C:\korpus\4.doc
Optimizing...
597 total milliseconds
Searching
Setelah tercipta index dari setiap dokumen selanjutnya kita dapat melakukan pencarian suatu kata. Searching pada program ini juga mendukung sintax boolean seperti AND, OR. Hasil dari pencarian adalah sebagai berikut:
No. | Query | Output |
1 | air | Searching for: air 2 total matching documents 1. C:\korpus\2.doc 2. C:\korpus\1.doc |
2. | wudhu | Searching for: wudhu 3 total matching documents 1. C:\korpus\2.doc 2. C:\korpus\3.doc 3. C:\korpus\4.doc |
3. | cara berwudhu | Searching for: cara berwudhu 2 total matching documents 1. C:\korpus\2.doc 2. C:\korpus\1.doc |
Sumber:
Mccandless, Michael, dkk. 2010. Luene in Action 2nd Edition. Manning Publications.
No comments:
Post a Comment