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

SOLR-17477: Support custom aggregates in plugin code #2742

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
* org.apache.lucene.index.DocValues}
*/
public abstract class DocValuesAcc extends SlotAcc {
SchemaField sf;
protected final SchemaField sf;

public DocValuesAcc(FacetContext fcontext, SchemaField sf) throws IOException {
super(fcontext);
Expand Down
17 changes: 9 additions & 8 deletions solr/core/src/java/org/apache/solr/search/facet/FacetModule.java
Original file line number Diff line number Diff line change
Expand Up @@ -370,7 +370,7 @@ static class FacetComponentState {
}

// base class for facet functions that can be used in a sort
abstract static class FacetSortableMerger extends FacetMerger {
public abstract static class FacetSortableMerger extends FacetMerger {
public void prepareSort() {}

@Override
Expand All @@ -386,7 +386,7 @@ public void finish(Context mcontext) {
public abstract int compareTo(FacetSortableMerger other, FacetRequest.SortDirection direction);
}

abstract static class FacetDoubleMerger extends FacetSortableMerger {
public abstract static class FacetDoubleMerger extends FacetSortableMerger {
@Override
public abstract void merge(Object facetResult, Context mcontext);

Expand Down Expand Up @@ -422,8 +422,8 @@ public static int compare(double a, double b, FacetRequest.SortDirection directi
}
}

static class FacetLongMerger extends FacetSortableMerger {
long val;
public static class FacetLongMerger extends FacetSortableMerger {
private long val;

@Override
public void merge(Object facetResult, Context mcontext) {
Expand All @@ -442,8 +442,9 @@ public int compareTo(FacetSortableMerger other, FacetRequest.SortDirection direc
}

// base class for facets that create buckets (and can hence have sub-facets)
abstract static class FacetBucketMerger<FacetRequestT extends FacetRequest> extends FacetMerger {
FacetRequestT freq;
public abstract static class FacetBucketMerger<FacetRequestT extends FacetRequest>
extends FacetMerger {
protected final FacetRequestT freq;

public FacetBucketMerger(FacetRequestT freq) {
this.freq = freq;
Expand Down Expand Up @@ -483,8 +484,8 @@ FacetMerger createFacetMerger(String key, Object val) {
}
}

static class FacetQueryMerger extends FacetBucketMerger<FacetQuery> {
FacetBucket bucket;
public static class FacetQueryMerger extends FacetBucketMerger<FacetQuery> {
private FacetBucket bucket;

public FacetQueryMerger(FacetQuery freq) {
super(freq);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
import org.apache.solr.search.QParser;
import org.apache.solr.search.SyntaxError;

abstract class FacetParser<T extends FacetRequest> {
public abstract class FacetParser<T extends FacetRequest> {
protected T facet;
protected FacetParser<?> parent;
protected String key;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
import org.apache.lucene.util.LongValues;
import org.apache.solr.schema.SchemaField;

class UniqueMultiDvSlotAcc extends UniqueSlotAcc {
public class UniqueMultiDvSlotAcc extends UniqueSlotAcc {
SortedSetDocValues topLevel;
SortedSetDocValues[] subDvs;
OrdinalMap ordMap;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
import org.apache.solr.schema.SchemaField;
import org.apache.solr.search.SolrIndexSearcher;

class UniqueMultivaluedSlotAcc extends UniqueSlotAcc implements UnInvertedField.Callback {
public class UniqueMultivaluedSlotAcc extends UniqueSlotAcc implements UnInvertedField.Callback {
private UnInvertedField uif;
private UnInvertedField.DocToTerm docToTerm;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
import org.apache.lucene.util.LongValues;
import org.apache.solr.schema.SchemaField;

class UniqueSinglevaluedSlotAcc extends UniqueSlotAcc {
public class UniqueSinglevaluedSlotAcc extends UniqueSlotAcc {
SortedDocValues topLevel;
SortedDocValues[] subDvs;
OrdinalMap ordMap;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
import org.apache.solr.schema.SchemaField;
import org.apache.solr.util.hll.HLL;

abstract class UniqueSlotAcc extends SlotAcc {
public abstract class UniqueSlotAcc extends SlotAcc {
HLLAgg.HLLFactory factory;
SchemaField field;
FixedBitSet[] arr;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import org.apache.solr.SolrTestCase;
import org.apache.solr.search.facet.FacetContext;
import org.apache.solr.search.facet.FacetMerger;
import org.apache.solr.search.facet.FacetModule;
import org.apache.solr.search.facet.SimpleAggValueSource;
import org.apache.solr.search.facet.SlotAcc;
import org.junit.Test;
Expand Down Expand Up @@ -76,22 +77,22 @@ public Object getValue(int slot) {

@Override
public FacetMerger createFacetMerger(Object prototype) {
return new FacetMerger() {
double total = 0.0D;

@Override
public void merge(Object facetResult, Context mcontext) {
total += (Double) facetResult;
}

@Override
public void finish(Context mcontext) {}

@Override
public Object getMergedResult() {
return total;
}
};
// check these inner classes can be referenced by name
FacetModule.FacetSortableMerger merger =
new FacetModule.FacetDoubleMerger() {
double total = 0.0D;

@Override
public void merge(Object facetResult, Context mcontext) {
total += (Double) facetResult;
}

@Override
public double getDouble() {
return total;
}
};
return merger;
}

@Override
Expand Down
Loading