Lucene Search Result Pagination


Setelah sekian lama akhirnya saya bisa kembali menulis blog😀 Kali ini saya akan menuliskan tentang Lucene pagination. Bagi Anda yang belum tahu apa itu Lucene, secara singkat Lucene adalah framework untuk indexing dan pencarian text yang ditulis dengan bahasa Java. Nah dalam pencarian pasti ada hasil pencarian banyak, nah kalau ditampilkan semua kan tidak enak dilihatnya. Oleh karena itu dibuat pagination/ per halaman. Setiap halaman hanya menampilkan beberapa hasil pencarian, misalkan hanya 10 hasil pencarian per halaman.

Okay, langsung saja ke algoritma/ idenya bagaimana membuat pagination. Pertama yang harus kita tahu adalah jumlah hasil pencarian, dari hasil pencarian ini kita bisa dapat jumlah halaman, kemudian menampilkan di tiap halamannya. Sederhana bukan?? Perhatikan kode program berikut.

<%
 String q = request.getParameter("query");
 try {
 Searcher searcher = Searcher.getInstance();
 searcher.setKeyword(q);
 ArrayList<Data> result = searcher.doSearch();

 if (result == null) {
 out.println("Tidak ada hasil untuk <strong>" + q + "</strong>");
 } else {
 int pageCount = result.size() / 10;
 if (result.size() % 10 != 0) {
 pageCount += 1;
 }

 int startidx;
 if (request.getParameter("start") != null) {
 startidx = Integer.parseInt(request.getParameter("start"));
 } else {
 startidx = 0;
 }

 int endidx;
 if ((startidx + 10) < result.size()) {
 endidx = startidx + 10;
 } else {
 endidx = result.size();
 }

 for (int idx = startidx; idx < endidx; idx++) {
 Data data = null;
 data = (Data) result.get(idx);
 out.println((idx + 1) + " - " + data.getJudul());
 out.println("<br/>");
 }

 out.println("<br/><hr/>");

 if (startidx > 0) {
 out.print("<a  href ='hasil.jsp?query=" + q + "&start=" + (startidx - 10) + "'> < prev </a>");
 }
 for (int idx = 0; idx < pageCount; idx++) {
 if (startidx / 10 == idx) {
 out.print("<strong>" + (idx + 1) + "</strong>");
 } else {
 out.print("<a  href ='hasil.jsp?query=" + q + "&start=" + (10 * idx) + "'>" + (idx + 1) + "</a>");
 }

 out.print(" ");
 }
 if (((startidx + 10) / 10) < pageCount) {
 out.print("<a  href ='hasil.jsp?query=" + q + "&start=" + (startidx + 10) + "'> next > </a>");
 }

 }
 } catch (Exception e) {
 out.println(e.getClass());
 }
 %>

Kode program di atas adalah penggalan dari halaman JSP dengan nama hasil.jsp. Selamat mencoba🙂

8 thoughts on “Lucene Search Result Pagination

  1. eshanne

    salam perkenalan dari saya yang asalnya sabah, negeri dibawah bayu..

    Maafkan saya jikalau saya menanya saudara..
    Begini ya.. saya bukannya seorang yang tau sangat tentang programming dan saya juga langsung tidak ada apa² kaitan dengan programming, kerja asal saya adalah sebagai Graphic & Web Designer sahaja.

    Walaupun begitu saya juga mengalami keadaan yang kritikal, misalannya tentang scripting (Php, asp & css) walaupun begitu saya masih bisa melakukan kerja.

    Tetapi saya ingin sangat meluaskan pengalaman saya untuk belajar programming..
    Sepertinya orang macam saya ini sudah tidak mampu lagi untuk berbuat apa², tapi harapan menggunung tinggi untuk mencari seseorang yang boleh mengajarnya..

    Saudara, benar² mengharap saudara dapat membantu saya dalam hal² programming seperti php & css. basicnya sudah ada cuma lagi tertinggal rangkap yang penting sekali iaitu penghayatan sesuatu cara untuk mempelajar erti & apa itu programming..

    Saya harap saudara dapat membantu saya menyelesaikan masalah saya ini..

    Terima kasih.

    Reply
  2. Daniel Susanto Post author

    Menurut hemat saya, lebih baik Anda mencari sesorang yang bisa mengajari Anda secara langsung daripada harus melalui Internet. Anda bisa mencari tempat kursus2 programming atau semacamnya. saya rasa itu lebih efektif. Bukan berarti saya tidak mau membantu Anda, tapi saya sendiri juga tidak selalu online.. begitu..

    Reply
  3. Rava

    Bang daniel saya minta tutorial instalasi lucene donk… kebetulan saya sedang mengerjakan tugas yang berbau lucene!!! dan saya senang skali bisa menemukan blog bang daniel ini… saya jg minta tutorial pembeljaran lucene!!! terima kasih sebelumnya

    Reply
  4. Rava

    maaf bang daniel saya tanya lagi bis saya ga tw orang yg bs di ajak share tentang lucene karena jarang sekali yang bisa… semester ini saya membuat semacam search engine denga interface java dekstop aplication dengan pencarian pengindeksan dari lucene!!! saya sudah membuat java dekstop aplikasinya dengan netbeans tapi untuk menghubungkan dengan lucene saya mengalami kesulitan… mohon bantuannya

    Reply
  5. Rava

    bang daniel saya boleh minta emailnya tidak??? saya ingin memperlihatkan aplikasi saya… saya sudah menghubungkan netbean dengan lucene!!! pi tetep saja saya msh blum mengerti… mohon bantuannya y

    Reply
  6. Daniel Susanto Post author

    kalau mau banyak diskusi ikut milisnya🙂
    kesulitan yang dialami di mananya? untuk menggabunkan Lucene dengan aplikasi kan seperti menggabungkan library lain, tinggal buat class sendiri yang menangani pencarian, trus dari aplikasi kamu, panggil kelas tersebut, tampilkan hasilnya..jadi to…heheh😀

    email saya susantodaniel(at)gmail(dot)com

    Reply

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s