Hi Mikhail, how about this : json.facet={ top_reviewers: { type: terms, field: author_s, sort: "booksCount desc", facet: { booksCount: "unique(_root_)" } } }
We query on children ( comments) and we calculate that facets. This should satisfy your test requirement: http://localhost:8983/solr/demo/select?q=*:*&wt=json&indent=true&fl=id,comment_t&json.facet={top_reviewers: {type: terms,field: author_s,sort: "booksCount desc",facet: {booksCount: "unique(_root_)"}}} Example Response : "top_reviewers":{ "buckets":[{ "val":"dan", "count":2, "booksCount":2}, { "val":"yonik", "count":2, "booksCount":2}, { "val":"Brandon Sanderson", "count":1, "booksCount":1}, *{ "val":"Mary", "count":2, "booksCount":1}* ... Wondering which kind of scenarios can rise if we consider a multi-level hierarchy... Cheers On 11 November 2015 at 22:26, Mikhail Khludnev <mkhlud...@griddynamics.com> wrote: > I found that example has not enough data to reproduce this functionality. > what if Mary left the same comment to the same book (book2_c4), then we > search for th* across comments > > > http://localhost:8983/solr/techproducts/select?q=comment_t%3Ath*&wt=csv&indent=true&fl=author_s,comment_t,id > > and get > > author_s,comment_t,id > dan,This book was too long.,book1_c2 > yonik,Ahead of its time... I wonder if it helped inspire The > Matrix?,book2_c1 > dan,A pizza boy for the Mafia franchise? Really?,book2_c2 > mary,Neal is so creative and detailed! Loved the metaverse!,book2_c3 > mary,Neal is so creative and detailed! Loved the metaverse!,book2_c4 > > then, I wish to calculate author facet, but count them in books > (rollup to parents)! > > dan(2) - commented both books > yonik(1) - only second one > *mary(1)* - only second one, despite twice > > So, far I'm ablle only > > > localhost:8983/solr/techproducts/select?q=comment_t%3Ath*&wt=json&indent=true&fl=author_s,comment_t,id&json.facet={top_reviewers > : { type: terms, field: author_s}} > > "top_reviewers":{ > "buckets":[{ > "val":"dan", > "count":2}, > { > "val":"mary", > "count":2}, > { > "val":"yonik", > "count":1}]}}} > > but it's comments mary(2), not books! > > Neither domain: { blockParent : "type_s:book" } nor domain: { > blockChildren : "type_s:book" } don't help. > > I tried to nest a facet with specifying a domain, it's just ignored > > localhost:8983/solr/techproducts/select?q=comment_t%3Ath*&wt=json&indent=true&fl=author_s,comment_t,id&json.facet={top_reviewers > : { type: terms, field: author_s, in_books : { type: terms, field: > author_s, domain: { blockParent : \"type_s:book\" }}}} > > > > > On Wed, Nov 11, 2015 at 6:31 PM, Yonik Seeley <ysee...@gmail.com> wrote: > > > On Mon, Nov 9, 2015 at 2:37 PM, Mikhail Khludnev > > <mkhlud...@griddynamics.com> wrote: > > > Yonik, > > > > > > I wonder is there a plan or a vision for something like > > > > > > https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-reverse-nested-aggregation.html > > > under JSON facets? > > > > Hmmm, I couldn't quite grok that complicated command syntax... but the > > description seems straight-forward enough: > > > > "The following aggregations will return the top commenters' username > > that have commented and per top commenter the top tags of the issues > > the user has commented on:" > > > > So if I translate that into "books" and "reviews" that I use here: > > http://yonik.com/solr-nested-objects/ > > > > it sounds like we start with a set of book objects, then map to the > > child domain to facet on comments, then map back to the parent domain > > to facet on books again. > > > > From that blog, this is the command that finds top review authors: > > > > json.facet={ > > top_reviewers : { > > type: terms, > > field: author_s, > > domain: { blockChildren : "type_s:book" } > > } > > } > > > > Now we just need to add a sub-facet that switches back to the parent > > domain to facet on something there (like genre... equiv to "tags" in > > the ES example): > > > > son.facet={ > > top_reviewers : { > > type: terms, > > field: author_s, > > domain: { blockChildren : "type_s:book" }, > > > > facet : { > > type:terms, > > field:genre, > > domain:{blockParent:"type_s:book"} > > } > > > > } > > } > > > > > > > > While there is certainly more work do be done with joins / > > block-joins, it seems like we can already do that specific example at > > least. > > > > -Yonik > > > > > > -- > Sincerely yours > Mikhail Khludnev > Principal Engineer, > Grid Dynamics > > <http://www.griddynamics.com> > <mkhlud...@griddynamics.com> > -- -------------------------- Benedetti Alessandro Visiting card : http://about.me/alessandro_benedetti "Tyger, tyger burning bright In the forests of the night, What immortal hand or eye Could frame thy fearful symmetry?" William Blake - Songs of Experience -1794 England