Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Lucene: Java-User
Why is the old value still in the index
 

Index | Next | Previous | View Flat


paul_t100 at fastmail

Dec 16, 2011, 8:54 AM


Views: 272
Permalink
Why is the old value still in the index

I'm adding documents to an index, at a later date I modify a document
and update the index, close the writer and open a new IndexReader. My
indexreader iterates over terms for that field and docFreq() returns one
as I would expect, however the iterator returns both the old value of
the document and the new value, I don't expect (or want) the old value
to still be in the index, so why is this.


This full test program generates:

TermDocsFreq1
test
TermDocsFreq1
test
test2

Dont expect to see 'test' listed the second time


package com.jthink.jaikoz;

import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.*;
import org.apache.lucene.store.RAMDirectory;
import org.apache.lucene.util.Version;


public class LuceneTest
{
public static void main(String []args)
{
try
{
String FIELD1="field1";
RAMDirectory dir = new RAMDirectory();
IndexWriterConfig iwc = new
IndexWriterConfig(Version.LUCENE_35, new
StandardAnalyzer(Version.LUCENE_35));
IndexWriter iw = new IndexWriter(dir, iwc);
Document document = new Document();
document.add(new Field(FIELD1,"test", Field.Store.YES,
Field.Index.ANALYZED));
iw.addDocument(document);
iw.close();

IndexReader ir = IndexReader.open(dir,true);
TermEnum terms = ir.terms(new Term(FIELD1));
System.out.println("TermDocsFreq"+terms.docFreq());
do
{
if (terms.term() != null)
{
System.out.println(terms.term().text());
}
}
while (terms.next() && terms.term().field().equals(FIELD1));

IndexWriterConfig iwc2 = new
IndexWriterConfig(Version.LUCENE_35, new
StandardAnalyzer(Version.LUCENE_35));
iw = new IndexWriter(dir, iwc2);
document = new Document();
document.add(new Field(FIELD1,"test2", Field.Store.YES,
Field.Index.ANALYZED));
iw.updateDocument(new Term(FIELD1,"term1"),document);
iw.close();

ir = IndexReader.open(dir,true);
terms = ir.terms(new Term(FIELD1));
System.out.println("TermDocsFreq"+terms.docFreq());
do
{
if (terms.term() != null)
{
System.out.println(terms.term().text());
}
}
while (terms.next() && terms.term().field().equals(FIELD1));
}
catch(Exception ex)
{
ex.printStackTrace();
}
}

}


---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe [at] lucene
For additional commands, e-mail: java-user-help [at] lucene

Subject User Time
Why is the old value still in the index paul_t100 at fastmail Dec 16, 2011, 8:54 AM
    Re: Why is the old value still in the index ian.lea at gmail Dec 16, 2011, 9:10 AM
    Re: Why is the old value still in the index paul_t100 at fastmail Dec 16, 2011, 9:19 AM
        RE: Why is the old value still in the index Carl.Austin at baesystemsdetica Dec 16, 2011, 9:32 AM
    RE: Why is the old value still in the index uwe at thetaphi Dec 16, 2011, 9:43 AM
        Re: Why is the old value still in the index paul_t100 at fastmail Dec 16, 2011, 12:54 PM
            Re: Why is the old value still in the index paul_t100 at fastmail Dec 16, 2011, 1:58 PM
                Re: Why is the old value still in the index rene.a.hackl at gmx Dec 16, 2011, 2:51 PM
                    Re: Why is the old value still in the index paul_t100 at fastmail Dec 16, 2011, 3:05 PM

  Index | Next | Previous | View Flat
 
 


Interested in having your list archived? Contact Gossamer Threads
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.