lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Anshum <ansh...@gmail.com>
Subject Re: Lucene Indexing
Date Mon, 06 Jun 2011 10:40:52 GMT
Hii Pranav,
By what you've mentioned, it looks like you want to modify a particular
document  (or all docs) by adding a particular field in the document(s). As
of right now, its not possible to modify a document inside a lucene index.
That is due to the way the index is structured. The only way as of now to
modify a record is to delete it, create a new doc and then add the new doc.
Also, the lucene's delete document function does not physically free up the
space for the document unless you optimize the index so you may have to do
that periodically, depending upon your update frequency.
Even the updateDocument function as of now would internally delete the
document and add the new supplied document.
Hope this answer helps.

--
Anshum Gupta
http://ai-cafe.blogspot.com


On Mon, Jun 6, 2011 at 11:59 AM, Pranav goyal <pranavgoyal40341@gmail.com>wrote:

> 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.
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message