You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by si...@apache.org on 2013/01/22 13:08:31 UTC
svn commit: r1436859 - in /lucene/dev/trunk/lucene: CHANGES.txt
core/src/java/org/apache/lucene/search/FilteredQuery.java
core/src/test/org/apache/lucene/search/TestFilteredQuery.java
Author: simonw
Date: Tue Jan 22 12:08:30 2013
New Revision: 1436859
URL: http://svn.apache.org/viewvc?rev=1436859&view=rev
Log:
LUCENE-4705: Pass on FilterStrategy in FilteredQuery if the filtered query is rewritten
Modified:
lucene/dev/trunk/lucene/CHANGES.txt
lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/FilteredQuery.java
lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestFilteredQuery.java
Modified: lucene/dev/trunk/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/CHANGES.txt?rev=1436859&r1=1436858&r2=1436859&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/CHANGES.txt (original)
+++ lucene/dev/trunk/lucene/CHANGES.txt Tue Jan 22 12:08:30 2013
@@ -64,6 +64,11 @@ New Features
* LUCENE-4599: New oal.codecs.compressing.CompressingTermVectorsFormat which
compresses term vectors into chunks of documents similarly to
CompressingStoredFieldsFormat. (Adrien Grand)
+
+Bug Fixes
+
+* LUCENE-4705: Pass on FilterStrategy in FilteredQuery if the filtered query is
+ rewritten. (Simon Willnauer)
======================= Lucene 4.1.0 =======================
Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/FilteredQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/FilteredQuery.java?rev=1436859&r1=1436858&r2=1436859&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/FilteredQuery.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/FilteredQuery.java Tue Jan 22 12:08:30 2013
@@ -344,7 +344,7 @@ public class FilteredQuery extends Query
if (queryRewritten != query) {
// rewrite to a new FilteredQuery wrapping the rewritten query
- final Query rewritten = new FilteredQuery(queryRewritten, filter);
+ final Query rewritten = new FilteredQuery(queryRewritten, filter, strategy);
rewritten.setBoost(this.getBoost());
return rewritten;
} else {
@@ -362,6 +362,11 @@ public class FilteredQuery extends Query
public final Filter getFilter() {
return filter;
}
+
+ /** Returns this FilteredQuery's {@link FilterStrategy} */
+ public FilterStrategy getFilterStrategy() {
+ return this.strategy;
+ }
// inherit javadoc
@Override
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestFilteredQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestFilteredQuery.java?rev=1436859&r1=1436858&r2=1436859&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestFilteredQuery.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestFilteredQuery.java Tue Jan 22 12:08:30 2013
@@ -31,6 +31,7 @@ import org.apache.lucene.index.IndexRead
import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.BooleanClause.Occur;
+import org.apache.lucene.search.FilteredQuery.FilterStrategy;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.Bits;
import org.apache.lucene.util.DocIdBitSet;
@@ -341,11 +342,16 @@ public class TestFilteredQuery extends L
}
}
+ private FilterStrategy randomFilterStrategy() {
+ return randomFilterStrategy(random(), true);
+ }
+
private void assertRewrite(FilteredQuery fq, Class<? extends Query> clazz) throws Exception {
// assign crazy boost to FQ
final float boost = random().nextFloat() * 100.f;
fq.setBoost(boost);
+
// assign crazy boost to inner
final float innerBoost = random().nextFloat() * 100.f;
fq.getQuery().setBoost(innerBoost);
@@ -356,6 +362,7 @@ public class TestFilteredQuery extends L
if (rewritten instanceof FilteredQuery) {
assertEquals(boost, rewritten.getBoost(), 1.E-5f);
assertEquals(innerBoost, ((FilteredQuery) rewritten).getQuery().getBoost(), 1.E-5f);
+ assertEquals(fq.getFilterStrategy(), ((FilteredQuery) rewritten).getFilterStrategy());
} else {
assertEquals(boost * innerBoost, rewritten.getBoost(), 1.E-5f);
}
@@ -366,8 +373,15 @@ public class TestFilteredQuery extends L
}
public void testRewrite() throws Exception {
- assertRewrite(new FilteredQuery(new TermQuery(new Term("field", "one")), new PrefixFilter(new Term("field", "o"))), FilteredQuery.class);
- assertRewrite(new FilteredQuery(new MatchAllDocsQuery(), new PrefixFilter(new Term("field", "o"))), ConstantScoreQuery.class);
+ assertRewrite(new FilteredQuery(new TermQuery(new Term("field", "one")), new PrefixFilter(new Term("field", "o")), randomFilterStrategy()), FilteredQuery.class);
+ assertRewrite(new FilteredQuery(new PrefixQuery(new Term("field", "one")), new PrefixFilter(new Term("field", "o")), randomFilterStrategy()), FilteredQuery.class);
+ assertRewrite(new FilteredQuery(new MatchAllDocsQuery(), new PrefixFilter(new Term("field", "o")), randomFilterStrategy()), ConstantScoreQuery.class);
+ }
+
+ public void testGetFilterStrategy() {
+ FilterStrategy randomFilterStrategy = randomFilterStrategy();
+ FilteredQuery filteredQuery = new FilteredQuery(new TermQuery(new Term("field", "one")), new PrefixFilter(new Term("field", "o")), randomFilterStrategy);
+ assertSame(randomFilterStrategy, filteredQuery.getFilterStrategy());
}
private static FilteredQuery.FilterStrategy randomFilterStrategy(Random random, final boolean useRandomAccess) {