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