Hi,
I have a question about the Index Readers in Lucene. 
As far as I understand from the documentation, with the Lucene 4, we can create 
an Index Reader from DirectoryReader.open(directory);

>From the code of the DirectoryReader, I have seen that it uses the 
>SegmentReader to create the reader. To get all the SegmentReaders we have to 
>loop through the AtomicReaderContexts that we can get from the 
>"dirReader.leaves()"; 

Am I correct until here? Did I miss something from the whole picture?

My question is: I want to associate each segment to its AtomicReaderContext. I 
have an application that caches information from each segment, and I want to 
keep the reference to the current opened segments. I have found a way to do 
that but that is not elegant : 

I could associate the reader.toString() method to each of the segment 
information.

 SegmentInfos sis = new SegmentInfos();
 sis.read(open);
 for (int i = 0; i < sis.size(); i ++) {
            segmentInfo[i] = sis.info(i);
 }

List<AtomicReaderContext> leaves = dirReader.leaves();
        System.out.println(leaves.size());
        for (AtomicReaderContext context : leaves) {
            checkIfExist(segmentInfo(i), context.reader().toString()); //here 
the solution is that I use the toString() method to extract the information of 
the segment. I cannot extract the information of the segment because it is 
protected
}


Do you have any clue whether it is possible to have this mapping in a different 
way? 

Thanks in advance,
Best regards,
Andi


                                          

Reply via email to