Hi,
I am learning lucene, and have created indexes using LuceneWriter (which
worked fine), but when I try an query it with LuceneReader it dose not
work, need help on the same. Following is the code for LuceneWriter.java
and LuceneReader.java:
public class LuceneWriter {
public static void main(String[] arg) throws IOException
{
File docDir = new File(DataConfig.dataDir);
Directory dir = FSDirectory.open(docDir);
HashMap<String, Analyzer> documentFiledAnalysers = new HashMap<String,
Analyzer>();
documentFiledAnalysers.put("id", new StandardAnalyzer(Version.LUCENE_43));
documentFiledAnalysers.put("content", new ShingleAnalyzerWrapper(new
StandardAnalyzer(Version.LUCENE_43), 2, 2, "", false, true));
PerFieldAnalyzerWrapper analyserWrapper = new PerFieldAnalyzerWrapper(new
StandardAnalyzer(Version.LUCENE_43), documentFiledAnalysers);
IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_43,
analyserWrapper);
iwc.setOpenMode(OpenMode.CREATE);
IndexWriter writer = new IndexWriter(dir, iwc);
Document doc2 = new Document();
doc2.add(new StringField("id", "2", Field.Store.YES));
doc2.add(new StringField("content", "I am leagend",
Field.Store.<http://field.store.no/>
YES));
Document doc3 = new Document();
doc3.add(new StringField("id", "3", Field.Store.YES));
doc3.add(new StringField("content", "Tom got a cat.",
Field.Store.<http://field.store.no/>
YES));
writer.addDocument(doc2);
writer.addDocument(doc3);
writer.close();
System.out.println("------------ Added index -----------");
}
}
public class LuceneReader {
/**
* @param args
*/
public static void main(String[] args) {
try {
IndexReader reader =
DirectoryReader.open(FSDirectory.open(new File(DataConfig.dataDir)));
IndexSearcher searcher = new IndexSearcher(reader);
HashMap<String, Analyzer> documentFieldAnalysers = new HashMap<String,
Analyzer>();
documentFieldAnalysers.put("id", new StandardAnalyzer(Version.LUCENE_43));
documentFieldAnalysers.put("content", new ShingleAnalyzerWrapper(new
StandardAnalyzer(Version.LUCENE_43),
2, 2, "", false, true));
PerFieldAnalyzerWrapper analyserWrapper
= new PerFieldAnalyzerWrapper(new StandardAnalyzer(Version.LUCENE_43),
documentFieldAnalysers);
QueryParser qpHelper = new QueryParser(Version.LUCENE_43, "content",
analyserWrapper);
Query query = qpHelper.parse("amleagend");
TopDocs results = searcher.search(query, 1000);
System.out.println("Searching for: " + query);
ScoreDoc[] hits = results.scoreDocs;
for(int i =0; i < hits.length; i++)
{
Document doc = searcher.doc(hits[i].doc);
System.out.println(doc);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Thanks,
Depanker Sharma