Hi all, I am a newbie to lucene. I have successfully created my lucene index. But I am not getting how to invalidate previous indexes whenever I add/delete/update any field in my lucene index. Please help me out.
for better understanding I have wrote my indexing function : StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_31); IndexWriter writer = null; File indexDir = new File("./indexDir"); try { writer = new IndexWriter(FSDirectory.open(indexDir), analyzer, IndexWriter.MaxFieldLength.UNLIMITED); } catch (IOException e1) { e1.printStackTrace(); } //Adding New fields to the document Document d = new Document(); d.add(new Field("key", key , Field.Store.YES , Field.Index.ANALYZED)); // d.add(Field.Text("obj", attribute.toString())); // index in Lucene here if (attribute instanceof String) { System.out.println("IN CMnString "); d.add(new Field("attribute",attribute.toString(), Field.Store.YES, Field.Index.NO)); System.out.println("key is ->"+key+"...Attribute is "+attribute); } else if (attribute instanceof CMnMoney) { System.out.println("IN CMnMoney "); d.add(new Field("attribute",attribute.toString(), Field.Store.YES, Field.Index.NO)); System.out.println("key is ->"+key+"...Value is "+attribute); } else if (attribute instanceof CMnQuantity) { System.out.println("IN CMnQuantity "); d.add(new Field("attribute",attribute.toString(), Field.Store.YES, Field.Index.NO)); System.out.println("key is ->"+key+"...Attribute is "+attribute); } else if (attribute instanceof CMnEnum) { System.out.println("IN CMnEnum "); d.add(new Field("attribute",attribute.toString(), Field.Store.YES, Field.Index.NO)); System.out.println("key is ->"+key+"...Attribute is "+attribute); } else { // see what else is there.... } try { writer.addDocument(d); writer.optimize() ; writer.close(); } catch (IOException e1) { e1.printStackTrace(); } } Please guide me further as I got stuck at this point. I have searched a lot about this and all I got is I have to first delete that document and then add that document again to my index.