Skip to content

Commit

Permalink
Don't use the fixed bitset filter cache for child nested level filter…
Browse files Browse the repository at this point in the history
…s, but the regular filter cache instead.

Random access based bitsets are not required for the child level nested level filters.

Closes #8810
  • Loading branch information
martijnvg committed Feb 19, 2015
1 parent b2b7506 commit 1644644
Show file tree
Hide file tree
Showing 10 changed files with 220 additions and 121 deletions.
Expand Up @@ -129,9 +129,11 @@ public abstract class XFieldComparatorSource extends FieldComparatorSource {
* parent + 1, or 0 if there is no previous parent, and R (excluded).
*/
public static class Nested {
private final BitDocIdSetFilter rootFilter, innerFilter;

public Nested(BitDocIdSetFilter rootFilter, BitDocIdSetFilter innerFilter) {
private final BitDocIdSetFilter rootFilter;
private final Filter innerFilter;

public Nested(BitDocIdSetFilter rootFilter, Filter innerFilter) {
this.rootFilter = rootFilter;
this.innerFilter = innerFilter;
}
Expand All @@ -144,10 +146,10 @@ public BitDocIdSet rootDocs(LeafReaderContext ctx) throws IOException {
}

/**
* Get a {@link BitDocIdSet} that matches the inner documents.
* Get a {@link DocIdSet} that matches the inner documents.
*/
public BitDocIdSet innerDocs(LeafReaderContext ctx) throws IOException {
return innerFilter.getDocIdSet(ctx);
public DocIdSet innerDocs(LeafReaderContext ctx) throws IOException {
return innerFilter.getDocIdSet(ctx, null);
}
}

Expand Down
Expand Up @@ -23,6 +23,7 @@
import org.apache.lucene.index.BinaryDocValues;
import org.apache.lucene.index.RandomAccessOrds;
import org.apache.lucene.index.SortedDocValues;
import org.apache.lucene.search.DocIdSet;
import org.apache.lucene.search.FieldComparator;
import org.apache.lucene.search.Scorer;
import org.apache.lucene.search.SortField;
Expand Down Expand Up @@ -81,7 +82,7 @@ protected SortedDocValues getSortedDocValues(LeafReaderContext context, String f
selectedValues = sortMode.select(values);
} else {
final BitSet rootDocs = nested.rootDocs(context).bits();
final BitSet innerDocs = nested.innerDocs(context).bits();
final DocIdSet innerDocs = nested.innerDocs(context);
selectedValues = sortMode.select(values, rootDocs, innerDocs);
}
if (sortMissingFirst(missingValue) || sortMissingLast(missingValue)) {
Expand Down Expand Up @@ -132,7 +133,7 @@ protected BinaryDocValues getBinaryDocValues(LeafReaderContext context, String f
selectedValues = sortMode.select(values, nonNullMissingBytes);
} else {
final BitSet rootDocs = nested.rootDocs(context).bits();
final BitSet innerDocs = nested.innerDocs(context).bits();
final DocIdSet innerDocs = nested.innerDocs(context);
selectedValues = sortMode.select(values, nonNullMissingBytes, rootDocs, innerDocs, context.reader().maxDoc());
}
return selectedValues;
Expand Down
Expand Up @@ -21,6 +21,7 @@

import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.index.NumericDocValues;
import org.apache.lucene.search.DocIdSet;
import org.apache.lucene.search.FieldComparator;
import org.apache.lucene.search.Scorer;
import org.apache.lucene.search.SortField;
Expand Down Expand Up @@ -78,7 +79,7 @@ protected NumericDocValues getNumericDocValues(LeafReaderContext context, String
selectedValues = sortMode.select(values, dMissingValue);
} else {
final BitSet rootDocs = nested.rootDocs(context).bits();
final BitSet innerDocs = nested.innerDocs(context).bits();
final DocIdSet innerDocs = nested.innerDocs(context);
selectedValues = sortMode.select(values, dMissingValue, rootDocs, innerDocs, context.reader().maxDoc());
}
return selectedValues.getRawDoubleValues();
Expand Down
Expand Up @@ -20,6 +20,7 @@

import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.index.NumericDocValues;
import org.apache.lucene.search.DocIdSet;
import org.apache.lucene.search.FieldComparator;
import org.apache.lucene.search.SortField;
import org.apache.lucene.util.BitSet;
Expand Down Expand Up @@ -70,7 +71,7 @@ protected NumericDocValues getNumericDocValues(LeafReaderContext context, String
selectedValues = sortMode.select(values, dMissingValue);
} else {
final BitSet rootDocs = nested.rootDocs(context).bits();
final BitSet innerDocs = nested.innerDocs(context).bits();
final DocIdSet innerDocs = nested.innerDocs(context);
selectedValues = sortMode.select(values, dMissingValue, rootDocs, innerDocs, context.reader().maxDoc());
}
return selectedValues.getRawFloatValues();
Expand Down
Expand Up @@ -21,6 +21,7 @@
import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.index.NumericDocValues;
import org.apache.lucene.index.SortedNumericDocValues;
import org.apache.lucene.search.DocIdSet;
import org.apache.lucene.search.FieldComparator;
import org.apache.lucene.search.SortField;
import org.apache.lucene.util.BitSet;
Expand Down Expand Up @@ -69,7 +70,7 @@ protected NumericDocValues getNumericDocValues(LeafReaderContext context, String
selectedValues = sortMode.select(values, dMissingValue);
} else {
final BitSet rootDocs = nested.rootDocs(context).bits();
final BitSet innerDocs = nested.innerDocs(context).bits();
final DocIdSet innerDocs = nested.innerDocs(context);
selectedValues = sortMode.select(values, dMissingValue, rootDocs, innerDocs, context.reader().maxDoc());
}
return selectedValues;
Expand Down

0 comments on commit 1644644

Please sign in to comment.