Most 4.0 PostingsReaders don't obey DISI contract
-------------------------------------------------

                 Key: LUCENE-3580
                 URL: https://issues.apache.org/jira/browse/LUCENE-3580
             Project: Lucene - Java
          Issue Type: Bug
    Affects Versions: 4.0
            Reporter: Robert Muir


While trying to do some refactoring, I noticed funky things going on with some 
codecs.

One problem is that DocIdSetIterator says the following:
{noformat}
Returns the following:
   * <ul>
   * <li>-1 or {@link #NO_MORE_DOCS} if {@link #nextDoc()} or
   * {@link #advance(int)} were not called yet.
{noformat}

But most 4.0 Docs/DocsAndPositionsEnums don't actually do this (e.g. return 0). 
instead we 
are relying on Scorers to 'cover' for them, which is inconsistent. Some scorers 
actually rely
upon this behavior, for example look at ReqExclScorer.toNonExcluded(), it calls 
docId() on the
excluded part before it calls nextDoc()

So we need to either fix these enums, change these enums to not extend 
DocIdSetIterator (and redefine
what the actual contract should be for these enums), change DocIdSetIterator, 
or something else.

Fixing the enums to return -1 here when they are uninitialized kinda sucks for 
the ones summing up
document deltas...


--
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-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to