Mikhail Khludnev created LUCENE-4571: ----------------------------------------
Summary: speedup disjunction with minShouldMatch Key: LUCENE-4571 URL: https://issues.apache.org/jira/browse/LUCENE-4571 Project: Lucene - Core Issue Type: Improvement Components: core/search Affects Versions: 4.1 Reporter: Mikhail Khludnev even minShouldMatch is supplied for DisjunctionSumScorer it enumerates whole disjunction, and verifies minShouldMatch condition [on every doc|https://github.com/apache/lucene-solr/blob/trunk/lucene/core/src/java/org/apache/lucene/search/DisjunctionSumScorer.java#L70]: {code} public int nextDoc() throws IOException { assert doc != NO_MORE_DOCS; while(true) { while (subScorers[0].docID() == doc) { if (subScorers[0].nextDoc() != NO_MORE_DOCS) { heapAdjust(0); } else { heapRemoveRoot(); if (numScorers < minimumNrMatchers) { return doc = NO_MORE_DOCS; } } } afterNext(); if (nrMatchers >= minimumNrMatchers) { break; } } return doc; } {code} [~spo] proposes (as well as I get it) to pop nrMatchers-1 scorers from the heap first, and then push them back advancing behind that top doc. For me the question no.1 is there a performance test for minShouldMatch constrained disjunction. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators 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