Hoss, Thanks for your note. Here's the exercise with aggregations https://github.com/mkhludnev/solr/blob/85870c467a0ffb038f45280c7a4bde58a4237b0e/solr/solr-ref-guide/modules/query-guide/examples/CustomAggTest.java
However, there's a question https://github.com/apache/solr/pull/2742/#issuecomment-2477285696 I copied it below. I read here https://solr.apache.org/guide/solr/latest/query-guide/json-facet-api.html#stat-facet-functions Unlike all the facets discussed so far, Aggregation functions (also called facet functions, analytic functions, or metrics) do not partition data into buckets. Instead, they calculate something over all the documents in the domain. Can the proposed approach with type:func yield multiple buckets? On Fri, Nov 22, 2024 at 10:06 PM Chris Hostetter <hossman_luc...@fucit.org> wrote: > > Isn't this already possible -- allthough kludgy and totally undocumented > -- because of how FacetParser delegates to FunctionQParser.parseAgg(...) ? > > That method delegates to SolerCore.getValueSourceParser(id) using an > "aggregation id" that has "agg_" prepended to it (unless the user already > specified it) and then asserts that the ValueSourceParser it gets back > produces an AggValueSource. > > So if you want to write a custom AggValueSource parsers that you can use > in facet queries with the name "custom", just implement it as a > ValueSourceParser (that returns an AggValueSource) and register it in > solrconfig.xml as "agg_custom") > > It's not pretty, but it should work -- it's how all the built in JSON > facet aggregations work, but w/implicit registration... > > > hossman@slate:~/lucene/solr [j11] [branch_9x] $ grep "agg_" > ./solr/core/src/java/org/apache/solr/search/ValueSourceParser.java > "agg_count", > "agg_unique", > "agg_uniqueBlock", > "agg_hll", > "agg_sum", > "agg_avg", > "agg_sumsq", > "agg_variance", > "agg_stddev", > "agg_missing", > "agg_countvals", > addParser("agg_multistat", new ValueSourceParser() { > "agg_min", > "agg_max", > "agg_percentile", > "agg_" + RelatednessAgg.NAME, > > > > > : Date: Thu, 21 Nov 2024 17:03:35 +0300 > : From: Mikhail Khludnev <m...@apache.org> > : Reply-To: dev@solr.apache.org > : To: dev@solr.apache.org > : Subject: Give a user to introduce new facet types in JSON Facet > : > : Hello > : This question is a spin off from > https://github.com/apache/solr/pull/2742/. > : PR#2742 is about deploying custom AggValueSource parsers and invoke it > via > : { > : type:func, > : func:custom,.. > : } > : The question is, how user can deploy own facet {type:custom}? see > : > https://solr.apache.org/guide/solr/latest/query-guide/json-facet-api.html#types-of-facets > : > : I see two options: > : - introduce a new extension point: FacetParser it's a kind of sibling > for > : QParserPlugin. My concerns are: There are some boilerplates around it > e.g. > : support new tag in solrconfig.xml, then support it in Config API, what > : else? Then, it's going to be an extension point for the FacetModule > : component, which who knows _will be with us forever_ you know. > : - make some surgery over FacetModule to make it subclassable, i.e. a > user > : creates a subclass of FacetModule overriding parseFacetOrStat() > : < > https://github.com/apache/solr/blob/b76a29d17c874806e3b6516810772e2238e93098/solr/core/src/java/org/apache/solr/search/facet/FacetParser.java#L141 > > > : and deploy it via existing plugin/module/configAPI. > : Note: the first attempt to make FacetModule subclassable was really scary > : https://github.com/apache/solr/pull/2865 the problem deserves more > efforts. > : > : Which of these paths would you like to pursue? > : > : -- > : Sincerely yours > : Mikhail Khludnev > : > > -Hoss > http://www.lucidworks.com/ > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@solr.apache.org > For additional commands, e-mail: dev-h...@solr.apache.org > > -- Sincerely yours Mikhail Khludnev