Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Don't use the fixed bitset filter cache for child nested level filters, but the regular filter cache instead #9740

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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