You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Uwe Schindler (JIRA)" <ji...@apache.org> on 2012/06/18 14:03:42 UTC

[jira] [Comment Edited] (LUCENE-4152) add one-syllable method to IndexReader enumerate subreaders

    [ https://issues.apache.org/jira/browse/LUCENE-4152?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13395840#comment-13395840 ] 

Uwe Schindler edited comment on LUCENE-4152 at 6/18/12 12:02 PM:
-----------------------------------------------------------------

bq. They also have tricky semantics (e.g. returning null).

No longer since January's refactoring, leaves() returns always something != null. And getSeqSubReaders is only available on CompositeReaders, which always have subReaders. See the other issue LUCENE-3866 where I did some more refactoring to make all this easier.

In general I agree with that, as leaves() and children()/subs() would then just be a shortcut to getTopReaderContext()'s methods (leaves(), children() - both are Iterable, no need to change anything) (I would rename that one to as[Top]Context()).

Returning plain subReaders without Contexts is not really useful, as all of Lucene's Query logic uses AtomicReaderContext, so leaves() on IndexReader returning the same as getTopReaderContext().leaves() is the way to go. This method can be added as final "easy-use method". I hope you look at my other patch @ LUCENE-3866, because it shows how simple the code is now without ReaderUtil.Gather.

Additionally, as noted in LUCENE-3866, getSequentialSubReaders() in CompositeReader should be made protected, user code does not need to use it. It's solely there for building the reader hierarchy, later available using IRC.leaves() and IRC.children(). Currently this method is only used by tests anymore (which can be rewritten). In CompositeReader, getSequentialSubReaders() should just be the protected abstract way for the API on top to get the inner structure, but not for the outside.
                
      was (Author: thetaphi):
    bq. They also have tricky semantics (e.g. returning null).

No longer since January's refactoring, leaves() returns always something != null. And getSeqSubReaders is only available on CompositeReaders, which always have subReaders. See the other issue LUCENE-3866 where I did some more refactoring to make all this easier.

In general I agree with that, as leaves() and children()/subs() would then just be a shortcut to getTopReaderContext()'s methods (leaves(), children() - both are Iterable, no need to change anything) (I would rename that one to as[Top]Context()).

Returning plain subReaders without Contexts is not really useful, as all of Lucene's Query logic uses AtomicReaderContext, so leaves() on IndexReader returning the same as getTopReaderContext().leaves() is the way to go. This method can be added as final "easy-use method". I hope you look at my other patch @ LUCENE-3866, because it shows how simple the code is now without ReaderUtil.Gather.
                  
> add one-syllable method to IndexReader enumerate subreaders
> -----------------------------------------------------------
>
>                 Key: LUCENE-4152
>                 URL: https://issues.apache.org/jira/browse/LUCENE-4152
>             Project: Lucene - Java
>          Issue Type: Bug
>            Reporter: Robert Muir
>            Priority: Blocker
>             Fix For: 4.0
>
>
> Description is exactly as written.
> getSequentialSubReaders/getTopLevelReaderContext, these method names are way too long/unuseable. They also have tricky semantics (e.g. returning null).
> In lucene 4, people cannot just use any indexreader and get a merged view. So we need to make this stuff easy on them:
> * single-syllable method name (leaves(), subs(), i will think on this)
> * supports enhanced for-loop (no returning null or anything like that)
> * on indexreader (not atomic or composite, plain old indexreader)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org