thanks for your quick reply.
I'm trying to use your method, but running into a NullPointerException on
the IndexWriteer.addIndexes().

code sample

isearcher is IndexSearcher,
newValues is IndexWriter with RAM Directory
                               <snip>
                ParallelReader preader = new ParallelReader();
                preader.add(isearcher.getIndexReader());
                preader.add(new 
IndexSearcher(newValues.getDirectory()).getIndexReader());
                
                int numdoc = preader.numDocs();
                
                for (int i = 0; i< numdoc; i++){
                        Document d= preader.document(i);
                        System.out.println( d.toString());
                }
                writer.addIndexes(new IndexReader[]{preader});
                               <snip>
this code works fine before the addIndexes line.
it printed the merged index properly.
but addIndexes throws NullPointerException.



java.lang.NullPointerException
        at
org.apache.lucene.index.ParallelReader$ParallelTermPositions.seek(ParallelReader.java:358)
        at
org.apache.lucene.index.ParallelReader$ParallelTermDocs.seek(ParallelReader.java:320)
        at
org.apache.lucene.index.SegmentMerger.appendPostings(SegmentMerger.java:327)
        at
org.apache.lucene.index.SegmentMerger.mergeTermInfo(SegmentMerger.java:298)
        at
org.apache.lucene.index.SegmentMerger.mergeTermInfos(SegmentMerger.java:272)
        at
org.apache.lucene.index.SegmentMerger.mergeTerms(SegmentMerger.java:236)
        at
org.apache.lucene.index.SegmentMerger.merge(SegmentMerger.java:89)
        at
org.apache.lucene.index.IndexWriter.addIndexes(IndexWriter.java:605)

I was using lucene 1.9.1, but there's a bug for this ,and i've updated to
lucene 2.0.0, 
but still the same.

thanks in advance,
  Philip




Andrzej Bialecki wrote:
> 
> philipc wrote:
>> hi,
>> 
>> I'm trying to add a new field to all the documents in a lucene index.
>> After searching around, I found the only way to do an update 
>> is by retrieve the old documents, update it, delete it, then re-add
>> to index.
>> 
>> However, this worked for only preserving the stored fields.
>> i've lost all the unstored fields from the documents.
>> is there anyway to keep the unstored fields as well?
>> 
>> Or any way to go around the problem, 
>> ie, anyway to export the entire index to a csv file
>> and then update the cvs, and then import it back?
> 
> Here's an idea: create an index consisting of documents with just this 
> field, adding documents in exactly the same order as they are in the 
> other index. Then use ParallelReader to access both indexes at the same 
> time - ParallelReader will present a merged view of both indexes. You 
> can also use IndexWriter.addIndexes() to create a merged index.
> 
> 
> -- 
> Best regards,
> Andrzej Bialecki     <><
>   ___. ___ ___ ___ _ _   __________________________________
> [__ || __|__/|__||\/|  Information Retrieval, Semantic Web
> ___|||__||  \|  ||  |  Embedded Unix, System Integration
> http://www.sigram.com  Contact: info at sigram dot com
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Updating-Lucene-Index-with-Unstored-fields-tp15188818p15236124.html
Sent from the Lucene - Java Developer mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to