Posted by: atans | January 16, 2013

Java – Lucene Search Multi Reader

This is a example lucene search multireader index, index structure as below:

–/home/index/

—-index1

—-index2

—-index3

source  lucene search


import java.io.File;
import java.io.IOException;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.MultiReader;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;

public class ReadMultiReader {
   public static String directori = "/home/index/";

   public void searchindexreader() throws CorruptIndexException, IOException, ParseException
   {
      //lucene
      File LUCENE_INDEX_DIRECTORY1 = new File(directori+"index1");
      File LUCENE_INDEX_DIRECTORY2 = new File(directori+"index2");
      File LUCENE_INDEX_DIRECTORY3 = new File(directori+"index3");
      String search = "content:bagus";
      System.out.println("Searching for: "+search);

      IndexReader iR1 = IndexReader.open(FSDirectory.open(LUCENE_INDEX_DIRECTORY1));
      IndexReader iR2 = IndexReader.open(FSDirectory.open(LUCENE_INDEX_DIRECTORY2));
      IndexReader iR3 = IndexReader.open(FSDirectory.open(LUCENE_INDEX_DIRECTORY3));

      Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_CURRENT);

      MultiReader mr = new MultiReader(iR1,iR2,iR3);
      IndexSearcher indexSearcher = new IndexSearcher(mr);

      QueryParser queryParser = new QueryParser(Version.LUCENE_CURRENT,"content", analyzer);
      org.apache.lucene.search.Query query = queryParser.parse(search);
      TopDocs topDocs = indexSearcher.search(query, null, 5);

      ScoreDoc[] scoreDosArray = topDocs.scoreDocs;
      System.out.println(topDocs.totalHits);
      Integer j=1;
      for(ScoreDoc scoredoc: scoreDosArray){
         //Retrieve the matched document and show relevant details
         Document doc = indexSearcher.doc(scoredoc.doc);
         System.out.println(j+" "+doc.get("content"));
         System.out.println("");
         j++;
      }
   }

   public static void main(String[] args) throws Exception {
      ReadMultiReader run = new ReadMultiReader();
      run.searchindexreader();
   }
}


Leave a comment

Categories

IT's REAL

Mencoba Bertahan Hidup

Indra Tunarsa

ALL is NEW

Cerita Motivasi - Kumpulan Kisah Inspirasi Terbaik

Kumpulan cerita motivasi, kisah inspiratif, cerita bijak, kisah teladan. Bisa dijadikan renungan agar kehidupan menjadi lebih baik.

Atans Blog

Little example basic code program, just trying training hope usefull

clasense4 blog

its about me

WordPress.com

WordPress.com is the best place for your personal blog or business site.