I was experimenting with multi-level hierarchy of nested objects.

the _root_ field will always point to  the root parent id.
If I model Books - Reviews - Comments , where do I have the reference to
the parent ?
I think we are getting closer to the understanding of the ES functionality.

It should allow to search in Level N ( comments for example) and then facet
over the unique values of :
1) parent - Given my comments to reviews of books, count all the different
reviews I commented* ( wondering how to access the parent of a child)*
2) grand parent - Given my comments to reviews of books, count all the
different books, I commented a review of ( tried this and it is working)
3) Any ancestor though the path

Cheers

On 12 November 2015 at 10:25, Alessandro Benedetti <abenede...@apache.org>
wrote:

> 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
>



-- 
--------------------------

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

Reply via email to