mirror of https://github.com/apache/lucene.git
LUCENE-5433: test of BooleanQuery.rewrite's single clause optimization
git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1594330 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
be017318d9
commit
f0001135dc
|
@ -352,4 +352,42 @@ public class TestBooleanQuery extends LuceneTestCase {
|
||||||
dir.close();
|
dir.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testOneClauseRewriteOptimization() throws Exception {
|
||||||
|
final float BOOST = 3.5F;
|
||||||
|
final String FIELD = "content";
|
||||||
|
final String VALUE = "foo";
|
||||||
|
|
||||||
|
Directory dir = newDirectory();
|
||||||
|
(new RandomIndexWriter(random(), dir)).shutdown();
|
||||||
|
IndexReader r = DirectoryReader.open(dir);
|
||||||
|
|
||||||
|
TermQuery expected = new TermQuery(new Term(FIELD, VALUE));
|
||||||
|
expected.setBoost(BOOST);
|
||||||
|
|
||||||
|
final int numLayers = atLeast(3);
|
||||||
|
boolean needBoost = true;
|
||||||
|
Query actual = new TermQuery(new Term(FIELD, VALUE));
|
||||||
|
|
||||||
|
for (int i = 0; i < numLayers; i++) {
|
||||||
|
if (needBoost && 0 == TestUtil.nextInt(random(),0,numLayers)) {
|
||||||
|
needBoost = false;
|
||||||
|
actual.setBoost(BOOST);
|
||||||
|
}
|
||||||
|
|
||||||
|
BooleanQuery bq = new BooleanQuery();
|
||||||
|
bq.add(actual, random().nextBoolean()
|
||||||
|
? BooleanClause.Occur.SHOULD : BooleanClause.Occur.MUST);
|
||||||
|
actual = bq;
|
||||||
|
}
|
||||||
|
if (needBoost) {
|
||||||
|
actual.setBoost(BOOST);
|
||||||
|
}
|
||||||
|
|
||||||
|
assertEquals(numLayers + ": " + actual.toString(),
|
||||||
|
expected, actual.rewrite(r));
|
||||||
|
|
||||||
|
r.close();
|
||||||
|
dir.close();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue