You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2015/02/21 15:01:24 UTC
svn commit: r1661365 - in /lucene/dev/branches/branch_5x: ./ lucene/
lucene/test-framework/
lucene/test-framework/src/java/org/apache/lucene/search/SearchEquivalenceTestBase.java
Author: rmuir
Date: Sat Feb 21 14:01:24 2015
New Revision: 1661365
URL: http://svn.apache.org/r1661365
Log:
LUCENE-6274: (tests-only). check approximations in equivalence tests
Modified:
lucene/dev/branches/branch_5x/ (props changed)
lucene/dev/branches/branch_5x/lucene/ (props changed)
lucene/dev/branches/branch_5x/lucene/test-framework/ (props changed)
lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/search/SearchEquivalenceTestBase.java
Modified: lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/search/SearchEquivalenceTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/search/SearchEquivalenceTestBase.java?rev=1661365&r1=1661364&r2=1661365&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/search/SearchEquivalenceTestBase.java (original)
+++ lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/search/SearchEquivalenceTestBase.java Sat Feb 21 14:01:24 2015
@@ -31,6 +31,7 @@ import org.apache.lucene.document.TextFi
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.index.Term;
+import org.apache.lucene.search.BooleanClause.Occur;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.util.TestUtil;
@@ -171,11 +172,29 @@ public abstract class SearchEquivalenceT
* Both queries will be filtered by <code>filter</code>
*/
protected void assertSubsetOf(Query q1, Query q2, Filter filter) throws Exception {
- // TRUNK ONLY: test both filter code paths
- if (filter != null && random().nextBoolean()) {
- q1 = new FilteredQuery(q1, filter, TestUtil.randomFilterStrategy(random()));
- q2 = new FilteredQuery(q2, filter, TestUtil.randomFilterStrategy(random()));
- filter = null;
+ // TODO: remove this randomness and just explicitly test the query N times always?
+ if (filter != null) {
+ int res = random().nextInt(3);
+ if (res == 0) {
+ // use FilteredQuery explicitly
+ q1 = new FilteredQuery(q1, filter, TestUtil.randomFilterStrategy(random()));
+ q2 = new FilteredQuery(q2, filter, TestUtil.randomFilterStrategy(random()));
+ filter = null;
+ } else if (res == 1) {
+ // use BooleanQuery FILTER clause
+ BooleanQuery bq1 = new BooleanQuery();
+ bq1.add(q1, Occur.MUST);
+ bq1.add(filter, Occur.FILTER);
+ q1 = bq1;
+
+ BooleanQuery bq2 = new BooleanQuery();
+ bq2.add(q2, Occur.MUST);
+ bq2.add(filter, Occur.FILTER);
+ q2 = bq2;
+ filter = null;
+ } else {
+ // do nothing, we use search(q, filter, int, ...) in this case.
+ }
}
// not efficient, but simple!
@@ -207,10 +226,28 @@ public abstract class SearchEquivalenceT
}
protected void assertSameScores(Query q1, Query q2, Filter filter) throws Exception {
- if (filter != null && random().nextBoolean()) {
- q1 = new FilteredQuery(q1, filter, TestUtil.randomFilterStrategy(random()));
- q2 = new FilteredQuery(q2, filter, TestUtil.randomFilterStrategy(random()));
- filter = null;
+ if (filter != null) {
+ int res = random().nextInt(3);
+ if (res == 0) {
+ // use FilteredQuery explicitly
+ q1 = new FilteredQuery(q1, filter, TestUtil.randomFilterStrategy(random()));
+ q2 = new FilteredQuery(q2, filter, TestUtil.randomFilterStrategy(random()));
+ filter = null;
+ } else if (res == 1) {
+ // use BooleanQuery FILTER clause
+ BooleanQuery bq1 = new BooleanQuery();
+ bq1.add(q1, Occur.MUST);
+ bq1.add(filter, Occur.FILTER);
+ q1 = bq1;
+
+ BooleanQuery bq2 = new BooleanQuery();
+ bq2.add(q2, Occur.MUST);
+ bq2.add(filter, Occur.FILTER);
+ q2 = bq2;
+ filter = null;
+ } else {
+ // do nothing, we use search(q, filter, int) in this case.
+ }
}
// not efficient, but simple!