[ https://issues.apache.org/jira/browse/LUCENE-743?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Michael Busch updated LUCENE-743: --------------------------------- Attachment: lucene-743.patch First version of my patch: * Adds the static method IndexReader.open(IndexReader) that returns a new instance of IndexReader in case the reader could be updated. If it was up to date then the passed-in instance is returned. Only IndexReader instances that were created by one of the IndexReader.open() methods can be refreshed. * SegmentsReader.reopen(SegmentInfos) looks in the SegmentInfos for a segment with the same name. If one could be found then either the deleted docs or the norms were updated, otherwise the segment name would have changed. reopen() clones the SegmentReader and either loads the deleted docs, the norms or both. Then the clone is returned and the original SegmentReader is marked as closed. * If the index has only one segment, then IndexReader.open(IndexReader) checks if the passed in IndexReader can be refreshed. This is only possible if it is no MultiReader and if the segment name has not changed. Otherwise a new SegmentReader instance is returned and the old reader is closed. * If the index has multiple segments, then IndexReader.open(IndexReader) creates a new MultiReader and tries to reuse the passed-in reader (in case it's a SegmentReader) or its subreaders (in case it's a MultiReader). For new segments new SegmentReaders are created. Old readers that couldn't be reused are closed. * Adds the new testcase TestIndexReaderReopen. It includes the method assertIndexEquals(IndexReader, IndexReader) that checks whether boths IndexReaders have the same content. The testcase creates an index and performes different modifications on that index. One IndexReader is refreshed after each index modification and compared to a fresh IndexReader which is opened after each modification. This first version is for review and not ready to commit. I want to add more extensive tests and probably clean up the code. All tests pass. > IndexReader.reopen() > -------------------- > > Key: LUCENE-743 > URL: https://issues.apache.org/jira/browse/LUCENE-743 > Project: Lucene - Java > Issue Type: Improvement > Components: Index > Reporter: Otis Gospodnetic > Assignee: Michael Busch > Priority: Minor > Attachments: IndexReaderUtils.java, lucene-743.patch, > MyMultiReader.java, MySegmentReader.java > > > This is Robert Engels' implementation of IndexReader.reopen() functionality, > as a set of 3 new classes (this was easier for him to implement, but should > probably be folded into the core, if this looks good). -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]