You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by jp...@apache.org on 2015/02/13 17:15:40 UTC
svn commit: r1659587 - in /lucene/dev/branches/branch_5x: ./ lucene/
lucene/core/ lucene/core/src/java/org/apache/lucene/search/ lucene/facet/
lucene/facet/src/java/org/apache/lucene/facet/ lucene/queries/
lucene/queries/src/java/org/apache/lucene/quer...
Author: jpountz
Date: Fri Feb 13 16:15:39 2015
New Revision: 1659587
URL: http://svn.apache.org/r1659587
Log:
LUCENE-1518: Make Filter extend Query.
Modified:
lucene/dev/branches/branch_5x/ (props changed)
lucene/dev/branches/branch_5x/lucene/ (props changed)
lucene/dev/branches/branch_5x/lucene/CHANGES.txt (contents, props changed)
lucene/dev/branches/branch_5x/lucene/core/ (props changed)
lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/CachingWrapperFilter.java
lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/ConstantScoreQuery.java
lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/DocTermOrdsRangeFilter.java
lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/DocValuesRangeFilter.java
lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/DocValuesTermsFilter.java
lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/FieldValueFilter.java
lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/Filter.java
lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/LRUFilterCache.java
lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/QueryWrapperFilter.java
lucene/dev/branches/branch_5x/lucene/facet/ (props changed)
lucene/dev/branches/branch_5x/lucene/facet/src/java/org/apache/lucene/facet/DrillDownQuery.java
lucene/dev/branches/branch_5x/lucene/queries/ (props changed)
lucene/dev/branches/branch_5x/lucene/queries/src/java/org/apache/lucene/queries/BooleanFilter.java
lucene/dev/branches/branch_5x/lucene/queries/src/java/org/apache/lucene/queries/FilterClause.java
lucene/dev/branches/branch_5x/lucene/queries/src/java/org/apache/lucene/queries/TermsFilter.java
lucene/dev/branches/branch_5x/lucene/spatial/ (props changed)
lucene/dev/branches/branch_5x/lucene/spatial/src/java/org/apache/lucene/spatial/vector/PointVectorStrategy.java
lucene/dev/branches/branch_5x/solr/ (props changed)
lucene/dev/branches/branch_5x/solr/core/ (props changed)
lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/SolrConstantScoreQuery.java
Modified: lucene/dev/branches/branch_5x/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/CHANGES.txt?rev=1659587&r1=1659586&r2=1659587&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/CHANGES.txt (original)
+++ lucene/dev/branches/branch_5x/lucene/CHANGES.txt Fri Feb 13 16:15:39 2015
@@ -72,6 +72,9 @@ API Changes
* LUCENE-6223: Move BooleanQuery.BooleanWeight to BooleanWeight.
(Robert Muir)
+* LUCENE-1518: Make Filter extend Query and return 0 as score.
+ (Uwe Schindler, Adrien Grand)
+
Other
* LUCENE-6193: Collapse identical catch branches in try-catch statements.
Modified: lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/CachingWrapperFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/CachingWrapperFilter.java?rev=1659587&r1=1659586&r2=1659587&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/CachingWrapperFilter.java (original)
+++ lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/CachingWrapperFilter.java Fri Feb 13 16:15:39 2015
@@ -126,8 +126,8 @@ public class CachingWrapperFilter extend
}
@Override
- public String toString() {
- return getClass().getSimpleName() + "("+filter+")";
+ public String toString(String field) {
+ return getClass().getSimpleName() + "("+filter.toString(field)+")";
}
@Override
Modified: lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/ConstantScoreQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/ConstantScoreQuery.java?rev=1659587&r1=1659586&r2=1659587&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/ConstantScoreQuery.java (original)
+++ lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/ConstantScoreQuery.java Fri Feb 13 16:15:39 2015
@@ -30,78 +30,47 @@ import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.ToStringUtils;
/**
- * A query that wraps another query or a filter and simply returns a constant score equal to the
- * query boost for every document that matches the filter or query.
- * For queries it therefore simply strips of all scores and returns a constant one.
+ * A query that wraps another query and simply returns a constant score equal to the
+ * query boost for every document that matches the query.
+ * It therefore simply strips of all scores and returns a constant one.
*/
public class ConstantScoreQuery extends Query {
- protected final Filter filter;
protected final Query query;
/** Strips off scores from the passed in Query. The hits will get a constant score
* dependent on the boost factor of this query. */
public ConstantScoreQuery(Query query) {
- if (query == null)
- throw new NullPointerException("Query may not be null");
- this.filter = null;
this.query = query;
}
- /** Wraps a Filter as a Query. The hits will get a constant score
- * dependent on the boost factor of this query.
- * If you simply want to strip off scores from a Query, no longer use
- * {@code new ConstantScoreQuery(new QueryWrapperFilter(query))}, instead
- * use {@link #ConstantScoreQuery(Query)}!
- */
- public ConstantScoreQuery(Filter filter) {
- if (filter == null)
- throw new NullPointerException("Filter may not be null");
- this.filter = filter;
- this.query = null;
- }
-
- /** Returns the encapsulated filter, returns {@code null} if a query is wrapped. */
- public Filter getFilter() {
- return filter;
- }
-
- /** Returns the encapsulated query, returns {@code null} if a filter is wrapped. */
+ /** Returns the encapsulated query. */
public Query getQuery() {
return query;
}
@Override
public Query rewrite(IndexReader reader) throws IOException {
- if (query != null) {
- Query rewritten = query.rewrite(reader);
- if (rewritten != query) {
- rewritten = new ConstantScoreQuery(rewritten);
- rewritten.setBoost(this.getBoost());
- return rewritten;
- }
- } else {
- assert filter != null;
- // Fix outdated usage pattern from Lucene 2.x/early-3.x:
- // because ConstantScoreQuery only accepted filters,
- // QueryWrapperFilter was used to wrap queries.
- if (filter instanceof QueryWrapperFilter) {
- final QueryWrapperFilter qwf = (QueryWrapperFilter) filter;
- final Query rewritten = new ConstantScoreQuery(qwf.getQuery().rewrite(reader));
- rewritten.setBoost(this.getBoost());
- return rewritten;
- }
+ Query sub = query;
+ if (sub instanceof QueryWrapperFilter) {
+ sub = ((QueryWrapperFilter) sub).getQuery();
+ }
+ Query rewritten = sub.rewrite(reader);
+ if (rewritten != query) {
+ rewritten = new ConstantScoreQuery(rewritten);
+ rewritten.setBoost(this.getBoost());
+ return rewritten;
}
return this;
}
@Override
public void extractTerms(Set<Term> terms) {
- // TODO: OK to not add any terms when wrapped a filter
- // and used with MultiSearcher, but may not be OK for
- // highlighting.
- // If a query was wrapped, we delegate to query.
- if (query != null)
+ // NOTE: ConstantScoreQuery used to wrap either a query or a filter. Now
+ // that filter extends Query, we need to only extract terms when the query
+ // is not a filter if we do not want to hit an UnsupportedOperationException
+ if (query instanceof Filter == false) {
query.extractTerms(terms);
+ }
}
protected class ConstantWeight extends Weight {
@@ -111,13 +80,13 @@ public class ConstantScoreQuery extends
public ConstantWeight(IndexSearcher searcher) throws IOException {
super(ConstantScoreQuery.this);
- this.innerWeight = (query == null) ? null : query.createWeight(searcher, false);
+ this.innerWeight = query.createWeight(searcher, false);
}
@Override
public float getValueForNormalization() throws IOException {
// we calculate sumOfSquaredWeights of the inner weight, but ignore it (just to initialize everything)
- if (innerWeight != null) innerWeight.getValueForNormalization();
+ innerWeight.getValueForNormalization();
queryWeight = getBoost();
return queryWeight * queryWeight;
}
@@ -127,46 +96,25 @@ public class ConstantScoreQuery extends
this.queryNorm = norm * topLevelBoost;
queryWeight *= this.queryNorm;
// we normalize the inner weight, but ignore it (just to initialize everything)
- if (innerWeight != null) innerWeight.normalize(norm, topLevelBoost);
+ innerWeight.normalize(norm, topLevelBoost);
}
@Override
public BulkScorer bulkScorer(LeafReaderContext context, Bits acceptDocs) throws IOException {
- if (filter != null) {
- assert query == null;
- return super.bulkScorer(context, acceptDocs);
- } else {
- assert query != null && innerWeight != null;
- BulkScorer bulkScorer = innerWeight.bulkScorer(context, acceptDocs);
- if (bulkScorer == null) {
- return null;
- }
- return new ConstantBulkScorer(bulkScorer, this, queryWeight);
+ BulkScorer bulkScorer = innerWeight.bulkScorer(context, acceptDocs);
+ if (bulkScorer == null) {
+ return null;
}
+ return new ConstantBulkScorer(bulkScorer, this, queryWeight);
}
@Override
public Scorer scorer(LeafReaderContext context, Bits acceptDocs) throws IOException {
- if (filter != null) {
- assert query == null;
- final DocIdSet dis = filter.getDocIdSet(context, acceptDocs);
- if (dis == null) {
- return null;
- }
- final DocIdSetIterator disi = dis.iterator();
- if (disi == null)
- return null;
- return new ConstantDocIdSetIteratorScorer(disi, this, queryWeight);
- } else {
- assert query != null && innerWeight != null;
- Scorer scorer = innerWeight.scorer(context, acceptDocs);
- if (scorer == null) {
- return null;
- }
- return new ConstantScoreScorer(scorer, queryWeight);
+ Scorer scorer = innerWeight.scorer(context, acceptDocs);
+ if (scorer == null) {
+ return null;
}
-
-
+ return new ConstantScoreScorer(scorer, queryWeight);
}
@Override
@@ -247,11 +195,7 @@ public class ConstantScoreQuery extends
@Override
public Collection<ChildScorer> getChildren() {
- if (query != null) {
- return Collections.singletonList(new ChildScorer(in, "constant"));
- } else {
- return Collections.emptyList();
- }
+ return Collections.singletonList(new ChildScorer(in, "constant"));
}
}
@@ -334,7 +278,7 @@ public class ConstantScoreQuery extends
@Override
public String toString(String field) {
return new StringBuilder("ConstantScore(")
- .append((query == null) ? filter.toString() : query.toString(field))
+ .append(query.toString(field))
.append(')')
.append(ToStringUtils.boost(getBoost()))
.toString();
@@ -347,17 +291,14 @@ public class ConstantScoreQuery extends
return false;
if (o instanceof ConstantScoreQuery) {
final ConstantScoreQuery other = (ConstantScoreQuery) o;
- return
- ((this.filter == null) ? other.filter == null : this.filter.equals(other.filter)) &&
- ((this.query == null) ? other.query == null : this.query.equals(other.query));
+ return this.query.equals(other.query);
}
return false;
}
@Override
public int hashCode() {
- return 31 * super.hashCode() +
- ((query == null) ? filter : query).hashCode();
+ return 31 * super.hashCode() + query.hashCode();
}
}
Modified: lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/DocTermOrdsRangeFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/DocTermOrdsRangeFilter.java?rev=1659587&r1=1659586&r2=1659587&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/DocTermOrdsRangeFilter.java (original)
+++ lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/DocTermOrdsRangeFilter.java Fri Feb 13 16:15:39 2015
@@ -116,7 +116,7 @@ public abstract class DocTermOrdsRangeFi
}
@Override
- public final String toString() {
+ public final String toString(String defaultField) {
final StringBuilder sb = new StringBuilder(field).append(":");
return sb.append(includeLower ? '[' : '{')
.append((lowerVal == null) ? "*" : lowerVal.toString())
Modified: lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/DocValuesRangeFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/DocValuesRangeFilter.java?rev=1659587&r1=1659586&r2=1659587&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/DocValuesRangeFilter.java (original)
+++ lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/DocValuesRangeFilter.java Fri Feb 13 16:15:39 2015
@@ -373,7 +373,7 @@ public abstract class DocValuesRangeFilt
}
@Override
- public final String toString() {
+ public final String toString(String defaultField) {
final StringBuilder sb = new StringBuilder(field).append(":");
return sb.append(includeLower ? '[' : '{')
.append((lowerVal == null) ? "*" : lowerVal.toString())
Modified: lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/DocValuesTermsFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/DocValuesTermsFilter.java?rev=1659587&r1=1659586&r2=1659587&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/DocValuesTermsFilter.java (original)
+++ lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/DocValuesTermsFilter.java Fri Feb 13 16:15:39 2015
@@ -119,4 +119,17 @@ public class DocValuesTermsFilter extend
}
};
}
+
+ @Override
+ public String toString(String defaultField) {
+ StringBuilder sb = new StringBuilder();
+ sb.append(field).append(": [");
+ for (BytesRef term : terms) {
+ sb.append(term).append(", ");
+ }
+ if (terms.length > 0) {
+ sb.setLength(sb.length() - 2);
+ }
+ return sb.append(']').toString();
+ }
}
Modified: lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/FieldValueFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/FieldValueFilter.java?rev=1659587&r1=1659586&r2=1659587&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/FieldValueFilter.java (original)
+++ lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/FieldValueFilter.java Fri Feb 13 16:15:39 2015
@@ -138,7 +138,7 @@ public class FieldValueFilter extends Fi
}
@Override
- public String toString() {
+ public String toString(String defaultField) {
return "FieldValueFilter [field=" + field + ", negate=" + negate + "]";
}
Modified: lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/Filter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/Filter.java?rev=1659587&r1=1659586&r2=1659587&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/Filter.java (original)
+++ lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/Filter.java Fri Feb 13 16:15:39 2015
@@ -21,13 +21,14 @@ import java.io.IOException;
import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.util.Bits;
+import org.apache.lucene.util.BytesRef;
-/**
- * Abstract base class for restricting which documents may
- * be returned during searching.
+/**
+ * Convenient base class for building queries that only perform matching, but
+ * no scoring. The scorer produced by such queries always returns 0 as score.
*/
-public abstract class Filter {
-
+public abstract class Filter extends Query {
+
/**
* Creates a {@link DocIdSet} enumerating the documents that should be
* permitted in search results. <b>NOTE:</b> null can be
@@ -37,23 +38,139 @@ public abstract class Filter {
* the index during searching. The returned {@link DocIdSet}
* must refer to document IDs for that segment, not for
* the top-level reader.
- *
+ *
* @param context a {@link org.apache.lucene.index.LeafReaderContext} instance opened on the index currently
* searched on. Note, it is likely that the provided reader info does not
* represent the whole underlying index i.e. if the index has more than
* one segment the given reader only represents a single segment.
- * The provided context is always an atomic context, so you can call
+ * The provided context is always an atomic context, so you can call
* {@link org.apache.lucene.index.LeafReader#fields()}
* on the context's reader, for example.
*
* @param acceptDocs
* Bits that represent the allowable docs to match (typically deleted docs
* but possibly filtering other documents)
- *
+ *
* @return a DocIdSet that provides the documents which should be permitted or
* prohibited in search results. <b>NOTE:</b> <code>null</code> should be returned if
* the filter doesn't accept any documents otherwise internal optimization might not apply
* in the case an <i>empty</i> {@link DocIdSet} is returned.
*/
public abstract DocIdSet getDocIdSet(LeafReaderContext context, Bits acceptDocs) throws IOException;
+
+ //
+ // Query compatibility
+ //
+
+ @Override
+ public boolean equals(Object that) {
+ // Query's default impl only compares boots but they do not matter in the
+ // case of filters since it does not influence scores
+ return this == that;
+ }
+
+ @Override
+ public int hashCode() {
+ // Query's default impl returns a hash of the boost but this is irrelevant to filters
+ return System.identityHashCode(this);
+ }
+
+ @Override
+ public String toString(String field) {
+ return getClass().getSimpleName();
+ }
+
+ @Override
+ public Weight createWeight(IndexSearcher searcher, boolean needsScores) throws IOException {
+ return new Weight(this) {
+
+ @Override
+ public float getValueForNormalization() throws IOException {
+ return 0f;
+ }
+
+ @Override
+ public void normalize(float norm, float topLevelBoost) {}
+
+ @Override
+ public Explanation explain(LeafReaderContext context, int doc) throws IOException {
+ final Scorer scorer = scorer(context, context.reader().getLiveDocs());
+ final boolean match = (scorer != null && scorer.advance(doc) == doc);
+ final String desc;
+ if (match) {
+ assert scorer.score() == 0f;
+ desc = "Match on id " + doc;
+ } else {
+ desc = "No match on id " + doc;
+ }
+ return new ComplexExplanation(match, 0f, desc);
+ }
+
+ @Override
+ public Scorer scorer(LeafReaderContext context, Bits acceptDocs) throws IOException {
+ final DocIdSet set = getDocIdSet(context, acceptDocs);
+ if (set == null) {
+ return null;
+ }
+ final DocIdSetIterator iterator = set.iterator();
+ if (iterator == null) {
+ return null;
+ }
+ return new Scorer(this) {
+
+ @Override
+ public float score() throws IOException {
+ return 0f;
+ }
+
+ @Override
+ public int freq() throws IOException {
+ return 1;
+ }
+
+ @Override
+ public int nextPosition() throws IOException {
+ return -1;
+ }
+
+ @Override
+ public int startOffset() throws IOException {
+ return -1;
+ }
+
+ @Override
+ public int endOffset() throws IOException {
+ return -1;
+ }
+
+ @Override
+ public BytesRef getPayload() throws IOException {
+ return null;
+ }
+
+ @Override
+ public int docID() {
+ return iterator.docID();
+ }
+
+ @Override
+ public int nextDoc() throws IOException {
+ return iterator.nextDoc();
+ }
+
+ @Override
+ public int advance(int target) throws IOException {
+ return iterator.advance(target);
+ }
+
+ @Override
+ public long cost() {
+ return iterator.cost();
+ }
+
+ };
+ }
+
+ };
+ }
}
Modified: lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/LRUFilterCache.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/LRUFilterCache.java?rev=1659587&r1=1659586&r2=1659587&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/LRUFilterCache.java (original)
+++ lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/LRUFilterCache.java Fri Feb 13 16:15:39 2015
@@ -592,6 +592,11 @@ public class LRUFilterCache implements F
public int hashCode() {
return in.hashCode() ^ getClass().hashCode();
}
+
+ @Override
+ public String toString(String field) {
+ return "CachingWrapperFilter(" + in.toString(field) + ")";
+ }
}
}
Modified: lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/QueryWrapperFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/QueryWrapperFilter.java?rev=1659587&r1=1659586&r2=1659587&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/QueryWrapperFilter.java (original)
+++ lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/QueryWrapperFilter.java Fri Feb 13 16:15:39 2015
@@ -68,8 +68,8 @@ public class QueryWrapperFilter extends
}
@Override
- public String toString() {
- return "QueryWrapperFilter(" + query + ")";
+ public String toString(String field) {
+ return "QueryWrapperFilter(" + query.toString(field) + ")";
}
@Override
Modified: lucene/dev/branches/branch_5x/lucene/facet/src/java/org/apache/lucene/facet/DrillDownQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/facet/src/java/org/apache/lucene/facet/DrillDownQuery.java?rev=1659587&r1=1659586&r2=1659587&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/facet/src/java/org/apache/lucene/facet/DrillDownQuery.java (original)
+++ lucene/dev/branches/branch_5x/lucene/facet/src/java/org/apache/lucene/facet/DrillDownQuery.java Fri Feb 13 16:15:39 2015
@@ -194,11 +194,11 @@ public final class DrillDownQuery extend
static Filter getFilter(Query query) {
if (query instanceof ConstantScoreQuery) {
ConstantScoreQuery csq = (ConstantScoreQuery) query;
- Filter filter = csq.getFilter();
- if (filter != null) {
- return filter;
+ Query sub = csq.getQuery();
+ if (sub instanceof Filter) {
+ return (Filter) sub;
} else {
- return getFilter(csq.getQuery());
+ return getFilter(sub);
}
} else {
return null;
Modified: lucene/dev/branches/branch_5x/lucene/queries/src/java/org/apache/lucene/queries/BooleanFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/queries/src/java/org/apache/lucene/queries/BooleanFilter.java?rev=1659587&r1=1659586&r2=1659587&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/queries/src/java/org/apache/lucene/queries/BooleanFilter.java (original)
+++ lucene/dev/branches/branch_5x/lucene/queries/src/java/org/apache/lucene/queries/BooleanFilter.java Fri Feb 13 16:15:39 2015
@@ -159,7 +159,7 @@ public class BooleanFilter extends Filte
/** Prints a user-readable version of this Filter. */
@Override
- public String toString() {
+ public String toString(String field) {
final StringBuilder buffer = new StringBuilder("BooleanFilter(");
final int minLen = buffer.length();
for (final FilterClause c : clauses) {
Modified: lucene/dev/branches/branch_5x/lucene/queries/src/java/org/apache/lucene/queries/FilterClause.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/queries/src/java/org/apache/lucene/queries/FilterClause.java?rev=1659587&r1=1659586&r2=1659587&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/queries/src/java/org/apache/lucene/queries/FilterClause.java (original)
+++ lucene/dev/branches/branch_5x/lucene/queries/src/java/org/apache/lucene/queries/FilterClause.java Fri Feb 13 16:15:39 2015
@@ -74,9 +74,13 @@ public final class FilterClause {
return filter.hashCode() ^ occur.hashCode();
}
+ public String toString(String field) {
+ return occur.toString() + filter.toString(field);
+ }
+
@Override
public String toString() {
- return occur.toString() + filter.toString();
+ return toString("");
}
}
Modified: lucene/dev/branches/branch_5x/lucene/queries/src/java/org/apache/lucene/queries/TermsFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/queries/src/java/org/apache/lucene/queries/TermsFilter.java?rev=1659587&r1=1659586&r2=1659587&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/queries/src/java/org/apache/lucene/queries/TermsFilter.java (original)
+++ lucene/dev/branches/branch_5x/lucene/queries/src/java/org/apache/lucene/queries/TermsFilter.java Fri Feb 13 16:15:39 2015
@@ -250,7 +250,7 @@ public final class TermsFilter extends F
}
@Override
- public String toString() {
+ public String toString(String defaultField) {
StringBuilder builder = new StringBuilder();
BytesRef spare = new BytesRef(termsBytes);
boolean first = true;
Modified: lucene/dev/branches/branch_5x/lucene/spatial/src/java/org/apache/lucene/spatial/vector/PointVectorStrategy.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/spatial/src/java/org/apache/lucene/spatial/vector/PointVectorStrategy.java?rev=1659587&r1=1659586&r2=1659587&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/spatial/src/java/org/apache/lucene/spatial/vector/PointVectorStrategy.java (original)
+++ lucene/dev/branches/branch_5x/lucene/spatial/src/java/org/apache/lucene/spatial/vector/PointVectorStrategy.java Fri Feb 13 16:15:39 2015
@@ -132,11 +132,11 @@ public class PointVectorStrategy extends
public Filter makeFilter(SpatialArgs args) {
//unwrap the CSQ from makeQuery
ConstantScoreQuery csq = makeQuery(args);
- Filter filter = csq.getFilter();
- if (filter != null)
- return filter;
+ Query sub = csq.getQuery();
+ if (sub instanceof Filter)
+ return (Filter) sub;
else
- return new QueryWrapperFilter(csq.getQuery());
+ return new QueryWrapperFilter(sub);
}
@Override
Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/SolrConstantScoreQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/SolrConstantScoreQuery.java?rev=1659587&r1=1659586&r2=1659587&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/SolrConstantScoreQuery.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/search/SolrConstantScoreQuery.java Fri Feb 13 16:15:39 2015
@@ -46,15 +46,16 @@ import org.apache.solr.common.SolrExcept
* Experimental and subject to change.
*/
public class SolrConstantScoreQuery extends ConstantScoreQuery implements ExtendedQuery {
+ private final Filter filter;
boolean cache = true; // cache by default
int cost;
public SolrConstantScoreQuery(Filter filter) {
super(filter);
+ this.filter = filter;
}
/** Returns the encapsulated filter */
- @Override
public Filter getFilter() {
return filter;
}