Index: src/test/org/apache/lucene/search/TestBooleanMinShouldMatch.java =================================================================== --- src/test/org/apache/lucene/search/TestBooleanMinShouldMatch.java (revision 825068) +++ src/test/org/apache/lucene/search/TestBooleanMinShouldMatch.java (working copy) @@ -318,9 +318,9 @@ for (int i=0; i<1000; i++) { int lev = rnd.nextInt(maxLev); final long seed = rnd.nextLong(); - BooleanQuery q1 = TestBoolean2.randBoolQuery(new Random(seed), lev, field, vals, null); + BooleanQuery q1 = TestBoolean2.randBoolQuery(new Random(seed), true, lev, field, vals, null); // BooleanQuery q2 = TestBoolean2.randBoolQuery(new Random(seed), lev, field, vals, minNrCB); - BooleanQuery q2 = TestBoolean2.randBoolQuery(new Random(seed), lev, field, vals, null); + BooleanQuery q2 = TestBoolean2.randBoolQuery(new Random(seed), true, lev, field, vals, null); // only set minimumNumberShouldMatch on the top level query since setting // at a lower level can change the score. minNrCB.postCreate(q2); Index: src/test/org/apache/lucene/search/TestBoolean2.java =================================================================== --- src/test/org/apache/lucene/search/TestBoolean2.java (revision 825068) +++ src/test/org/apache/lucene/search/TestBoolean2.java (working copy) @@ -25,9 +25,12 @@ import org.apache.lucene.document.Field; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.index.Term; +import org.apache.lucene.index.IndexReader; import org.apache.lucene.queryParser.ParseException; import org.apache.lucene.queryParser.QueryParser; import org.apache.lucene.store.RAMDirectory; +import org.apache.lucene.store.MockRAMDirectory; +import org.apache.lucene.store.Directory; import org.apache.lucene.util.LuceneTestCase; /** Test BooleanQuery2 against BooleanQuery by overriding the standard query parser. @@ -35,8 +38,13 @@ */ public class TestBoolean2 extends LuceneTestCase { private IndexSearcher searcher; + private IndexSearcher bigSearcher; + private IndexReader reader; + private static int NUM_EXTRA_DOCS = 6000; public static final String field = "field"; + private Directory dir2; + private int mulFactor; public void setUp() throws Exception { super.setUp(); @@ -49,8 +57,45 @@ } writer.close(); searcher = new IndexSearcher(directory, true); + + // Make big index + dir2 = new MockRAMDirectory(directory); + + // First multiply small test index: + mulFactor = 1; + int docCount = 0; + do { + final Directory copy = new RAMDirectory(dir2); + IndexWriter w = new IndexWriter(dir2, new WhitespaceAnalyzer(), IndexWriter.MaxFieldLength.UNLIMITED); + w.addIndexesNoOptimize(new Directory[] {copy}); + docCount = w.maxDoc(); + w.close(); + mulFactor *= 2; + } while(docCount < 3000); + + IndexWriter w = new IndexWriter(dir2, new WhitespaceAnalyzer(), IndexWriter.MaxFieldLength.UNLIMITED); + Document doc = new Document(); + doc.add(new Field("field2", "xxx", Field.Store.NO, Field.Index.ANALYZED)); + for(int i=0;i