[ https://issues.apache.org/jira/browse/LUCENE-1614?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Michael McCandless updated LUCENE-1614: --------------------------------------- Attachment: LUCENE-1614.patch OK I think we're getting close... I attached patch w/ these changes/questions: * I think we should require that nextDoc/advance not be called again once NO_MORE_DOCS has already been returned? This would save checks, eg in ConjunctionScorer & DisjunctionMaxScorer & ReqExclScorer at least, for "did I already return NO_MORE_DOCS" on every nextDoc call. Some things already seem to require this (eg DocIdBitSet's DISI). * I think the new code for applying a filter during searching (~line 282 of IndexSearcher) can be made more efficient in the "if (scorerDoc == filterDoc)" case. Inside there, we ask filterDocIter to do nextDoc(), at which point we know scorerDoc is < filterDoc, and so it'd be better to call scorer.advance, there, instead of wrapping around the loop and having to do the if at the top? * Fixed bug in how "more" is computed in BooleanScorer (we were directly assigning to more instead of or'ing in the new value) * Various cosmetic changes -- removed unused vars, imports; made some attrs final. * [As a separate issue, it seems like NonMatchingScorer should be removed, and we should fix BooleanQuery.scorer to instead return null in such cases] > Add next() and skipTo() variants to DocIdSetIterator that return the current > doc, instead of boolean > ---------------------------------------------------------------------------------------------------- > > Key: LUCENE-1614 > URL: https://issues.apache.org/jira/browse/LUCENE-1614 > Project: Lucene - Java > Issue Type: Improvement > Components: Search > Reporter: Shai Erera > Fix For: 2.9 > > Attachments: LUCENE-1614.patch, LUCENE-1614.patch, LUCENE-1614.patch, > LUCENE-1614.patch, LUCENE-1614.patch, LUCENE-1614.patch, LUCENE-1614.patch, > LUCENE-1614.patch, LUCENE-1614.patch, LUCENE-1614.patch > > > See > http://www.nabble.com/Another-possible-optimization---now-in-DocIdSetIterator-p23223319.html > for the full discussion. The basic idea is to add variants to those two > methods that return the current doc they are at, to save successive calls to > doc(). If there are no more docs, return -1. A summary of what was discussed > so far: > # Deprecate those two methods. > # Add nextDoc() and skipToDoc(int) that return doc, with default impl in DISI > (calls next() and skipTo() respectively, and will be changed to abstract in > 3.0). > #* I actually would like to propose an alternative to the names: advance() > and advance(int) - the first advances by one, the second advances to target. > # Wherever these are used, do something like '(doc = advance()) >= 0' instead > of comparing to -1 for improved performance. > I will post a patch shortly -- 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: java-dev-unsubscr...@lucene.apache.org For additional commands, e-mail: java-dev-h...@lucene.apache.org