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/21 15:37:45 UTC
svn commit: r1661370 - in /lucene/dev/branches/branch_5x: ./ lucene/
lucene/core/ lucene/core/src/java/org/apache/lucene/util/ lucene/demo/
lucene/demo/src/java/org/apache/lucene/demo/facet/ lucene/facet/
lucene/facet/src/java/org/apache/lucene/facet/r...
Author: jpountz
Date: Sat Feb 21 14:37:45 2015
New Revision: 1661370
URL: http://svn.apache.org/r1661370
Log:
LUCENE-6269: Remove BooleanFilter.
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/util/BitDocIdSet.java
lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/util/BitSet.java
lucene/dev/branches/branch_5x/lucene/demo/ (props changed)
lucene/dev/branches/branch_5x/lucene/demo/src/java/org/apache/lucene/demo/facet/DistanceFacetsExample.java
lucene/dev/branches/branch_5x/lucene/facet/ (props changed)
lucene/dev/branches/branch_5x/lucene/facet/src/java/org/apache/lucene/facet/range/DoubleRange.java
lucene/dev/branches/branch_5x/lucene/facet/src/java/org/apache/lucene/facet/range/DoubleRangeFacetCounts.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/queryparser/ (props changed)
lucene/dev/branches/branch_5x/lucene/test-framework/ (props changed)
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/schema/CurrencyField.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=1661370&r1=1661369&r2=1661370&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/CHANGES.txt (original)
+++ lucene/dev/branches/branch_5x/lucene/CHANGES.txt Sat Feb 21 14:37:45 2015
@@ -86,6 +86,9 @@ API Changes
instead. This will be as efficient now that queries can opt out from
scoring. (Adrien Grand)
+* LUCENE-6269: Removed BooleanFilter, use a QueryWrapperFilter(BooleanQuery)
+ instead. (Adrien Grand)
+
* LUCENE-6223: Move BooleanQuery.BooleanWeight to BooleanWeight.
(Robert Muir)
Modified: lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/util/BitDocIdSet.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/util/BitDocIdSet.java?rev=1661370&r1=1661369&r2=1661370&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/util/BitDocIdSet.java (original)
+++ lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/util/BitDocIdSet.java Sat Feb 21 14:37:45 2015
@@ -148,6 +148,7 @@ public class BitDocIdSet extends DocIdSe
/**
* Removes from this builder documents that are not contained in <code>it</code>.
*/
+ @Deprecated
public void and(DocIdSetIterator it) throws IOException {
if (denseSet != null) {
denseSet.and(it);
@@ -159,6 +160,7 @@ public class BitDocIdSet extends DocIdSe
/**
* Removes from this builder documents that are contained in <code>it</code>.
*/
+ @Deprecated
public void andNot(DocIdSetIterator it) throws IOException {
if (denseSet != null) {
denseSet.andNot(it);
Modified: lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/util/BitSet.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/util/BitSet.java?rev=1661370&r1=1661369&r2=1661370&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/util/BitSet.java (original)
+++ lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/util/BitSet.java Sat Feb 21 14:37:45 2015
@@ -112,6 +112,7 @@ public abstract class BitSet implements
/** Does in-place AND of the bits provided by the iterator. The state of the
* iterator after this operation terminates is undefined. */
+ @Deprecated
public void and(DocIdSetIterator iter) throws IOException {
assertUnpositioned(iter);
leapFrog(iter, new LeapFrogCallBack() {
@@ -135,6 +136,7 @@ public abstract class BitSet implements
/** this = this AND NOT other. The state of the iterator after this operation
* terminates is undefined. */
+ @Deprecated
public void andNot(DocIdSetIterator iter) throws IOException {
assertUnpositioned(iter);
leapFrog(iter, new LeapFrogCallBack() {
Modified: lucene/dev/branches/branch_5x/lucene/demo/src/java/org/apache/lucene/demo/facet/DistanceFacetsExample.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/demo/src/java/org/apache/lucene/demo/facet/DistanceFacetsExample.java?rev=1661370&r1=1661369&r2=1661370&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/demo/src/java/org/apache/lucene/demo/facet/DistanceFacetsExample.java (original)
+++ lucene/dev/branches/branch_5x/lucene/demo/src/java/org/apache/lucene/demo/facet/DistanceFacetsExample.java Sat Feb 21 14:37:45 2015
@@ -42,13 +42,15 @@ import org.apache.lucene.index.Directory
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
-import org.apache.lucene.queries.BooleanFilter;
import org.apache.lucene.queries.function.ValueSource;
import org.apache.lucene.search.BooleanClause;
+import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.Filter;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.MatchAllDocsQuery;
import org.apache.lucene.search.NumericRangeFilter;
+import org.apache.lucene.search.NumericRangeQuery;
+import org.apache.lucene.search.QueryWrapperFilter;
import org.apache.lucene.search.SortField;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
@@ -179,28 +181,28 @@ public class DistanceFacetsExample imple
maxLng = Math.toRadians(180);
}
- BooleanFilter f = new BooleanFilter();
+ BooleanQuery f = new BooleanQuery();
// Add latitude range filter:
f.add(NumericRangeFilter.newDoubleRange("latitude", Math.toDegrees(minLat), Math.toDegrees(maxLat), true, true),
- BooleanClause.Occur.MUST);
+ BooleanClause.Occur.FILTER);
// Add longitude range filter:
if (minLng > maxLng) {
// The bounding box crosses the international date
// line:
- BooleanFilter lonF = new BooleanFilter();
- lonF.add(NumericRangeFilter.newDoubleRange("longitude", Math.toDegrees(minLng), null, true, true),
+ BooleanQuery lonF = new BooleanQuery();
+ lonF.add(NumericRangeQuery.newDoubleRange("longitude", Math.toDegrees(minLng), null, true, true),
BooleanClause.Occur.SHOULD);
- lonF.add(NumericRangeFilter.newDoubleRange("longitude", null, Math.toDegrees(maxLng), true, true),
+ lonF.add(NumericRangeQuery.newDoubleRange("longitude", null, Math.toDegrees(maxLng), true, true),
BooleanClause.Occur.SHOULD);
f.add(lonF, BooleanClause.Occur.MUST);
} else {
f.add(NumericRangeFilter.newDoubleRange("longitude", Math.toDegrees(minLng), Math.toDegrees(maxLng), true, true),
- BooleanClause.Occur.MUST);
+ BooleanClause.Occur.FILTER);
}
- return f;
+ return new QueryWrapperFilter(f);
}
/** User runs a query and counts facets. */
Modified: lucene/dev/branches/branch_5x/lucene/facet/src/java/org/apache/lucene/facet/range/DoubleRange.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/facet/src/java/org/apache/lucene/facet/range/DoubleRange.java?rev=1661370&r1=1661369&r2=1661370&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/facet/src/java/org/apache/lucene/facet/range/DoubleRange.java (original)
+++ lucene/dev/branches/branch_5x/lucene/facet/src/java/org/apache/lucene/facet/range/DoubleRange.java Sat Feb 21 14:37:45 2015
@@ -26,6 +26,7 @@ import org.apache.lucene.queries.functio
import org.apache.lucene.search.DocIdSet;
import org.apache.lucene.search.DocIdSetIterator;
import org.apache.lucene.search.Filter;
+import org.apache.lucene.search.FilteredDocIdSet;
import org.apache.lucene.util.Bits;
import org.apache.lucene.util.NumericUtils;
@@ -121,52 +122,33 @@ public final class DoubleRange extends R
final int maxDoc = context.reader().maxDoc();
- final Bits fastMatchBits;
+ final DocIdSet fastMatchDocs;
if (fastMatchFilter != null) {
- DocIdSet dis = fastMatchFilter.getDocIdSet(context, null);
- if (dis == null) {
+ fastMatchDocs = fastMatchFilter.getDocIdSet(context, null);
+ if (fastMatchDocs == null) {
// No documents match
return null;
}
- fastMatchBits = dis.bits();
- if (fastMatchBits == null) {
- throw new IllegalArgumentException("fastMatchFilter does not implement DocIdSet.bits");
- }
} else {
- fastMatchBits = null;
+ fastMatchDocs = new DocIdSet() {
+ @Override
+ public long ramBytesUsed() {
+ return 0;
+ }
+ @Override
+ public DocIdSetIterator iterator() throws IOException {
+ return DocIdSetIterator.all(maxDoc);
+ }
+ };
}
- return new DocIdSet() {
-
- @Override
- public Bits bits() {
- return new Bits() {
- @Override
- public boolean get(int docID) {
- if (acceptDocs != null && acceptDocs.get(docID) == false) {
- return false;
- }
- if (fastMatchBits != null && fastMatchBits.get(docID) == false) {
- return false;
- }
- return accept(values.doubleVal(docID));
- }
-
- @Override
- public int length() {
- return maxDoc;
- }
- };
- }
-
- @Override
- public DocIdSetIterator iterator() {
- throw new UnsupportedOperationException("this filter can only be accessed via bits()");
- }
-
+ return new FilteredDocIdSet(fastMatchDocs) {
@Override
- public long ramBytesUsed() {
- return 0L;
+ protected boolean match(int docID) {
+ if (acceptDocs != null && acceptDocs.get(docID) == false) {
+ return false;
+ }
+ return accept(values.doubleVal(docID));
}
};
}
Modified: lucene/dev/branches/branch_5x/lucene/facet/src/java/org/apache/lucene/facet/range/DoubleRangeFacetCounts.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/facet/src/java/org/apache/lucene/facet/range/DoubleRangeFacetCounts.java?rev=1661370&r1=1661369&r2=1661370&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/facet/src/java/org/apache/lucene/facet/range/DoubleRangeFacetCounts.java (original)
+++ lucene/dev/branches/branch_5x/lucene/facet/src/java/org/apache/lucene/facet/range/DoubleRangeFacetCounts.java Sat Feb 21 14:37:45 2015
@@ -96,28 +96,31 @@ public class DoubleRangeFacetCounts exte
FunctionValues fv = valueSource.getValues(Collections.emptyMap(), hits.context);
totCount += hits.totalHits;
- Bits bits;
+ final DocIdSetIterator fastMatchDocs;
if (fastMatchFilter != null) {
DocIdSet dis = fastMatchFilter.getDocIdSet(hits.context, null);
if (dis == null) {
// No documents match
continue;
}
- bits = dis.bits();
- if (bits == null) {
- throw new IllegalArgumentException("fastMatchFilter does not implement DocIdSet.bits");
- }
+ fastMatchDocs = dis.iterator();
} else {
- bits = null;
+ fastMatchDocs = null;
}
DocIdSetIterator docs = hits.bits.iterator();
-
- int doc;
- while ((doc = docs.nextDoc()) != DocIdSetIterator.NO_MORE_DOCS) {
- if (bits != null && bits.get(doc) == false) {
- doc++;
- continue;
+
+ for (int doc = docs.nextDoc(); doc != DocIdSetIterator.NO_MORE_DOCS; ) {
+ if (fastMatchDocs != null) {
+ int fastMatchDoc = fastMatchDocs.docID();
+ if (fastMatchDoc < doc) {
+ fastMatchDoc = fastMatchDocs.advance(doc);
+ }
+
+ if (doc != fastMatchDoc) {
+ doc = docs.advance(fastMatchDoc);
+ continue;
+ }
}
// Skip missing docs:
if (fv.exists(doc)) {
@@ -125,6 +128,8 @@ public class DoubleRangeFacetCounts exte
} else {
missingCount++;
}
+
+ doc = docs.nextDoc();
}
}
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=1661370&r1=1661369&r2=1661370&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 Sat Feb 21 14:37:45 2015
@@ -26,9 +26,11 @@ import org.apache.lucene.index.LeafReade
import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.search.BitsFilteredDocIdSet;
import org.apache.lucene.search.BooleanClause.Occur;
+import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.DocIdSet;
import org.apache.lucene.search.DocIdSetIterator;
import org.apache.lucene.search.Filter;
+import org.apache.lucene.search.QueryWrapperFilter;
import org.apache.lucene.util.BitDocIdSet;
import org.apache.lucene.util.Bits;
@@ -40,7 +42,9 @@ import org.apache.lucene.util.Bits;
* SHOULD Filters are OR'd together
* The resulting Filter is NOT'd with the NOT Filters
* The resulting Filter is AND'd with the MUST Filters
+ * @deprecated Use a {@link QueryWrapperFilter} on a {@link BooleanQuery} instead
*/
+@Deprecated
public class BooleanFilter extends Filter implements Iterable<FilterClause> {
private final List<FilterClause> clauses = new ArrayList<>();
Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/schema/CurrencyField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/schema/CurrencyField.java?rev=1661370&r1=1661369&r2=1661370&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/schema/CurrencyField.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/schema/CurrencyField.java Sat Feb 21 14:37:45 2015
@@ -37,10 +37,10 @@ import org.apache.lucene.analysis.util.R
import org.apache.lucene.analysis.util.ResourceLoaderAware;
import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.index.IndexableField;
-import org.apache.lucene.queries.BooleanFilter;
import org.apache.lucene.queries.function.FunctionValues;
import org.apache.lucene.queries.function.ValueSource;
import org.apache.lucene.search.BooleanClause.Occur;
+import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.FieldValueQuery;
import org.apache.lucene.search.Filter;
import org.apache.lucene.search.Query;
@@ -335,12 +335,11 @@ public class CurrencyField extends Field
p1 == null ? null : p1.getAmount() + "",
p2 == null ? null : p2.getAmount() + "",
minInclusive, maxInclusive);
- final BooleanFilter docsInRange = new BooleanFilter();
- docsInRange.add(docsWithValues, Occur.MUST);
- docsInRange.add(vsRangeFilter, Occur.MUST);
+ final BooleanQuery docsInRange = new BooleanQuery();
+ docsInRange.add(docsWithValues, Occur.FILTER);
+ docsInRange.add(vsRangeFilter, Occur.FILTER);
- return new SolrConstantScoreQuery(docsInRange);
-
+ return new SolrConstantScoreQuery(new QueryWrapperFilter(docsInRange));
}
@Override