Hmmm…ini nih bikin orang sumpek bin stres beberapa bulan,hampir aja jadi gila 😀 yah alhamdulilah masa-masa itu terlewati juga,trimakasih kepada smua pihak yang tlah membantu dalam penyusunan Tugas Akhir (TA) saya, maaf tidak bisa menyebutkan satu persatu hanya doa yang bisa saya panjatkan untuk kebaikan kawan-kawan smua, smoga Allah SWT membalas kebaikan walau sebesar biji dzarrah,Amin 🙂
Berawal dari kesulitan ketika mencari referensi about Lucene buat mengisi bab 2 buku TA, mbah google diubek-ubek smpe elek kok ya gak nemu-nemu referensi bout lucene yang berbahasa Indonesia akhirnya dengan berat hati translate lah dari buku karangan orang besar,in english???of course lah…saya cukup tertatih-tatih menerjemahkan pemahaman yang ada di buku,minta bantuannya koreksi ya kawan-kawan klo ada yang gak sesuai terjemahan ma aslinya,maklum score toefl saya mepet bgt,harap maklum ya kawan-kawan 😀
Semua orang mengalami masalah yang sama yaitu informasi yang berlebihan dengan menggunakan pendekatan yang berbeda-beda. Salah satu faktor kunci di balik  popularitas dan kesuksesan Lucene adalah kesederhanaannya. Lucene memiliki performa yang tinggi,  Information Retrieval (IR) library yang luas. Hal itu memudahkan untuk menambahkan kemampuan indexing dan searching pada aplikasi. Lucene adalah free, open-source project yang diimplementasikan pada java; merupakan member dari apache jakarta family project yang populer, dilisensikan dibawah Apache liberal software License. Dengan demikian, Lucene saat ini, dan telah selama beberapa tahun,merupakan free IR library java yang paling populer.
Lucene menyediakan core API yang mudah tetapi powerful, hanya memerlukan sedikit pemahaman mengenai full-text indexing dan searching, hanya perlu mempelajari class-class untuk memulai mengintegrasikan Lucene ke aplikasi.
Pengguna baru Lucene sering melakukan kesalahan menganggap sebagai sebuah aplikasi yang siap digunakan seperti program file-search, web crawler,atau website search engine. Itu bukan Lucene,Lucene adalah sebuah software library,sebuah toolkit, bukan fitur lengkap aplikasi pencarian. Hal ini berkaitan dengan text indexing dan searching, dan melakukan hal-hal itu dengan sangat baik. Lucene memungkinkan aplikasi berurusan dengan business rules yang khusus pada permasalahan domain ketika menyembunyikan kompleksitas implementasi indexing dan searching dengan penggunaan API yang mudah. Lucene dapat diilustrasikan sebagai layer aplikasi pada gambar dibawah ini :
Lucene dapat membuat index dan mencari semua data yang dapat dikonversi ke format textual.Lucene tidak mempedulikan sumber data,format,atau bahkan bahasa yang digunakan selama dapat dikonversi ke text. Lucene dapat digunakan untuk index dan mencari data yang tersimpan pada file : web page pada remote web server, dokumen yang tersimpan pada sistem file lokal, file text, dokumen microsoft word, file HTML atau PDF, atau semua format dimana dapat dikonversi ke informasi textual.
Dengan Lucene, dapat dengan mudah menambah kapabilitas indexing dan searching pada aplikasi :
1. Searchable email : sebuah aplikasi email dimana user dapat   mencari pesan diarsip dan menambahkan pesan baru ke index.
2. Online documentation search : sebuah pembaca  dokumen –CD-based,Web-based, atau tersembunyi didalam aplikasi– membiarkan user mencari dokumentasi online atau arsip publikasi.
3. Searchable Webpages : sebuah web browser atau proxy server dapat membangun sebuah search engine untuk mengindeks setiap web page yang telah dikunjungi user, memungkinkan user untuk dengan mudah mengunjungi kembali web page tersebut.
4. Website search : Suatu program CGI bisa membiarkan user mencari website anda.
5. Content search : sebuah aplikasi bisa membiarkan user mencari dokumen yang tersimpan secara spesifik,ini dapat diintegrasikan ke dalam Open Document dialog.
SEJARAH LUCENE
Lucene pada awalnya ditulis oleh Doug Cutting; pada awalnya tersedia untuk download dari situsnya SourceForge. Bergabung dengan Apache Software Foundation’s Jakarta family of high-quality open source Java products pada September 2001. Dengan setiap rilis sejak saat itu, proyek ini telah mengalami peningkatan visibilitas, menarik lebih banyak pengguna dan pengembang. Pada Juli 2004, Lucene versi 1.4 telah dirilis, dengan bug fix 1.4.2 dirilis pada awal Oktober, Tabel dibawah menunjukkan sejarah rilis Lucene.
INDEXING
Jantung dari semua search engine adalah konsep indexing yaitu melakukan proses pada data asli menjadi pencarian sangat efisien berdasarkan referensi silang untuk memfasilitasi rapid searching. Untuk mencari sejumlah besar text secara cepat, pertama harus membuat index text tersebut dan melakukan konversi ke format yang dapat membuat pencarian lebih cepat, mengeliminasi proses urutan scanning yang lambat. Proses konversi ini disebut indexing dan outputnya disebut index.
Index dapat dianggap sebagai struktur data yang memungkinkan akses random secara cepat pada kata-kata yang tersimpan di dalamnya. Konsep di balik itu adalah analog dengan index pada akhir dari sebuah buku, yang memungkinkan dengan cepat menemukan halaman yang membahas topik-topik tertentu. Dalam kasus Lucene, sebuah index adalah struktur data yang dirancang khusus, biasanya disimpan pada file sistem sebagai sekumpulan file index.
Class-class berikut merupakan prosedur yang digunakan untuk melakukan indexing :
1. IndexWriter
IndexWriter adalah komponen utama proses indexing. Class ini menciptakan index baru dan menambah dokumen index yang sudah ada. IndexWriter sebagai objek yang memberikan akses write ke index tapi tidak membiarkan user membaca atau mencari itu. Walaupun namanya IndexWriter tetapi bukan satu-satunya class yang digunakan untuk memodifikasi index.
2. Directory
Class Directory mewakili lokasi index Lucene. Merupakan class abstrak yang memungkinkan subclasses untuk menyimpan index yang cocok. Pada contoh indexer, Â menggunakan path ke directory file sistem aktual untuk memperoleh turunan dari directory, yang diberikan ke IndexWriter constructor.
3. Analyzer
Text sebelum di index, melewati sebuah Analyzer. Analyzer ditentukan di constructor IndexWriter, yang berfungsi untuk ekstraksi token dari text yang akan di index dan menghilangkan sisanya.
4. Document
Sebuah dokumen mewakili sekumpulan field. Dapat dianggap sebagai dokumen virtual seperti web page, pesan email, atau file text yang akan dilihat kembali lain waktu. Meta-data seperti author, title, subject, tanggal dimodifikasi, dan sebagainya, di index dan disimpan secara terpisah sebagai field dokumen.
5. Field
Setiap dokumen dalam sebuah index berisi satu atau lebih field bernama, dituliskan dalam sebuah class yang disebut Field. Setiap field berhubungan dengan data yang diambil dari index selama pencarian. Lucene menawarkan 4 tipe field yang berbeda : Keyword, UnIndexed, UnStored, Text.
SEARCHING
Searching adalah proses mencari kata-kata dalam sebuah index untuk menemukan dokumen dimana dokumen-dokumen itu muncul. Kualitas pencarian biasanya dijelaskan dengan menggunakan matrik precision dan recall. Pengukuran recall menunjukkan seberapa baik sistem pencarian untuk menemukan dokumen yang relevan, sedangkan pengukuran precision menunjukkan seberapa baik sistem melakukan filter dengan dokumen yang tidak relevan. Namun, harus mempertimbangkan sejumlah faktor lain ketika berpikir tentang searching. Telah dijelaskan kecepatan dan kemampuan untuk dengan cepat mencari text dalam jumlah besar. Dukungan untuk query single dan multiterm, query phrase, wildcards, result ranking, dan sorting juga penting.
Class-class berikut digunakan untuk melakukan searching :
1. IndexSearcher
IndexSearcher digunakan untuk mencari apa yang IndexWriter indexing : pusat link ke index yang memaparkan beberapa metode pencarian. IndexSearcher dapat dianggap sebagai class yang membuka index dalam mode read-only.
2. Term
Sebuah Term adalah basic unit untuk searching. Serupa dengan Field object, terdiri dari sepasang element string : nama field dan value field. Term object juga terlibat dalam proses indexing. Namun,itu semua diciptakan oleh internal Lucene, sehingga tidak perlu memikirkan term sementara proses indexing.
3. Query
Lucene dilengkapi dengan sejumlah subclass Query antara lain TermQuery, BooleanQuery, PhraseQuery,PrefixQuery, PhrasePrefixQuery,RangeQuery, FilteredQuery, dan SpanQuery.
4. TermQuery
TermQuery adalah tipe query yang paling dasar didukung oleh Lucene, dan merupakan salah satu jenis query yang primitif. Ini digunakan untuk pencocokan dokumen yang terdapat field dengan value spesifik.
5. Hits
Class Hits adalah tampungan sederhana pointer untuk mengurutkan hasil pencarian dokumen yang cocok dengan query yang diberikan. Untuk alasan performa, Hits instances tidak mengambil dari index semua dokumen yang cocok dengan query, tetapi hanya sebagian kecil pada saat itu.
ARCHITECTURE ( PACKAGE )
org.apache.lucene
Merupakan Top-level package. Lucene’s package information, including version.
org.apache.lucene.analysis
Package analysis menyediakan mekanisme untuk mengkonversi String dan Reader ke dalam token-token yang dapat di index oleh Lucene. Ada tiga class utama dalam package :
–Analyzer : Sebuah Analyzer bertanggung jawab untuk   membangun TokenStream yang dapat digunakan oleh proses indexing dan searching.
–Tokenizer : Sebuah Tokenizer adalah TokenStream dan bertanggung jawab untuk memecah text yang masuk ke dalam token. Dalam kebanyakan kasus, sebuah analyzer akan menggunakan Tokenizer sebagai langkah pertama dalam proses analisis.
–TokenFilter : Sebuah TokenFilter juga merupakan TokenStream dan bertanggung jawab untuk memodifikasi token yang telah diciptakan oleh tokenizer. Modifikasi umum yang dilakukan oleh TokenFilter adalah deletion, stemming, synonym injection, dan down casing. Tidak semua analyzer memerlukan TokenFilter.
org.apache.lucene.analysis.standard
Grammar yang cepat berbasis tokenizer dibangun dengan JFlex. Memiliki 3 class utama :
–StandardAnalyzer : Filter StandardTokenizer dengan StandardFilter, LowerCaseFilter dan StopFilter, menggunakan daftar stop words bahasa inggris.
–StandardFilter : Normalisasi token yang diekstrasi dengan StandardTokenizer.
–StandardTokenizer : Grammar berbasis tokenizer dibangun dengan JFlex. Hal ini menjadi tokenizer yang baik untuk dokumen bahasa Eropa pada umumnya :
– Memecah kata-kata pada karakter tanda baca, menghapus tanda baca. Namun, sebuah tanda titik yang tidak diikuti oleh spasi dianggap sebagai bagian dari token.
– Memecah kata di tanda hubung, kecuali jika ada nomor dalam token, dalam hal ini seluruh token ditafsirkan sebagai nomor produk dan tidak terpecah.
– Mengenali alamat email dan hostname internet sebagai satu token.
org.apache.lucene.document
Representasi logic dari Dokumen untuk indexing dan searching. Package Dokumen menyediakan representasi logic untuk level user dari content yang akan di-index dan dicari. Package juga menyediakan utilitas untuk bekerja dengan Dokumen dan Field. Sebuah Dokumen adalah kumpulan field. Sebuah field adalah representasi logis content user yang akan di-index atau disimpan. Field memiliki sejumlah properti yang akan menunjukkan pada Lucene bagaimana memperlakukan Content (indexed, tokenized, stored,dll).
org.apache.lucene.index
Code untuk maintain dan akses index. Memiliki banyak class,salah satunya class IndexWritter yang digunakan untuk membuat index dan melakukan maintain pada index.
org.apache.lucene.queryParser
Query parser sederhana diimplementasikan dengan JavaCC. Class utama yang digunakan adalah Class QueryParser, Class ini dihasilkan oleh JavaCC. Method yang paling penting adalah parse(String). Sintaks untuk query string adalah sebagai berikut : Sebuah query adalah serangkaian klausa. Sebuah klausa dapat diawali dengan :
– Tanda plus (+) atau minus (-), yang menunjukkan bahwa klausa diperlukan atau masing-masing tidak diperbolehkan, atau
– Term yang diikuti oleh tanda titik-dua, yang menunjukkan field yang dicari. Hal ini memungkinkan untuk membuat beberapa query pencarian field.
Sebuah klausa dapat berupa :
– Term, menunjukkan semua dokumen yang berisi term ini, atau
– Nested query (query bersarang), tertutup dalam tanda kurung. Catatan : bahwa ini dapat digunakan dengan awalan +/- untuk meminta apapun dari serangkaian term.
Grammar query adalah :
Query ::= ( Clause )*
Clause ::= [“+”, “-“][<TERM> “:”](<TERM> | “(” Query “)” )
org.apache.lucene.search
Package yang digunakan untuk mencari pada index. Aplikasi biasanya memanggil Searcher.search(Query) atau Searcher.search(Query,Filter).
Class Query : TermQuery
Dari berbagai implementasi Query, TermQuery adalah yang paling mudah untuk dipahami dan yang paling sering digunakan dalam aplikasi. Sebuah TermQuery mencocokkan semua dokumen yang berisi term tertentu, yang merupakan kata yang terdapat di field tertentu. Dengan demikian, TermQuery mengidentifikasi dan memberi score semua dokumen yang memiliki field dengan string tertentu didalamnya. Membuat TermQuery sesederhana seperti :
TermQuery tq = new TermQuery(new Term("fieldName","term"));
Pada contoh tersebut, Query mengidentifikasi semua dokumen yang memiliki field yang bernama “fieldName” yang terdapat kata “term”
Semoga bermanfaat kawan,untuk info lebih lanjut silahkan baca buku ini…CMIIW yak 🙂
hai..aku mw nnya donk..
program aplikasi lucene itu bsa di download dmna yaa??
aku udah dapet cma agak bgg karena katanya masih butuh apache ato ant’s gitu..akku kurang ngerti..
>.<
bsa bantuin aku gak??thx before
salam kenal yaa..^^
Salam Kenal 🙂
Maap br ngeblog lg ni skrg,waduw sy udah agak lupa ama lucene,maap bgt ya 🙂
Makasih udah brkunjung 🙂
eh aq mau buat search engine buat dokumen pake lucene nih, tapi dokumen nya bahasa indonesia, bisa kasih saran buat bikin analyzer nya???
Salam Kenal.
Maap br ngeblog lg ni skrg,sy udah lupa ttg lucene.maapin yak 🙂
lucene, tantangan baru
boleh gak diberikan reference yang lebih banyak, agar saya bisa mencoba dan mengimplementasikannya.
sekarang, rada bingung.
kalo boleh ke email ini ya, trim
Salam Kenal 🙂
Maap ya br buka blog ni 😦
salam kenal, saya Marlisa.
kalau mau melakukan stemming apa saja langkah2nya?
terimakasih atas bantuannya
Salam kenal Marlisa.
Maap br buka blog ni
it’s okay, hehe
anyway blognya sangat membantu tugas akhir saya. Thanks a lot for writing 🙂
ur welcome,senang bisa membantu mengingat sy dulu kesulitan mencari referensi lucene 🙂
sangat membantu trimakasih..TA saya jg mengenai Lucene.. 🙂
Salam kenal 🙂
Halo, mau tanya dong kak..
lucene itu kan juga bisa buat proses stemming bahasa Indonesia yah.. menurut kamu hasil stemming lucene itu sudah pas belum ya? thx
Halu,salam kenal.
seinget sy,lucene mrp metode baru saat itu dan blm bnyk pengembangannnya. utk hasil stemming bisa diandalkan.smoga bs membantu.
Salam kenal, ini saya tambahkan contoh lain dari Lucene, semoga bermanfaat….
https://abdiansah.wordpress.com/2015/04/04/membuat-search-engine-lokal-menggunakan-lucene/
Makasih tambahan infonya, semoga bermanfaat 🙂
sama2 😀
Assalamualaikum mba olga
perkenalkan saya zeta. saya dari jurusan matematika ITS mba. saya sekarang sedang mengerjakan tugas akhir tapi saya mendapati masalah tentang lucene. saya ingin belajar lebih tentang lucene, saya sudah meng email mba olga di ceria_ols@yahoo.com
terima kasih mba
Waalaikumsalam…
Hai Zeta, iyah udah baca emailnya tapi belum dibales. maap saia udah agak lupa bgt sama lucene hehehe. Lanjut via email aja ya 🙂