Indeed you shouldn't load all hits, you should register a
org.apache.lucene.search.Collector that will aggregate data while matches
are being collected.

Since you are already using a ToChildBlockJoinQuery, you should be able to
use it in conjunction with utility classes from lucene/facets. Have you
looked into it already?

On Tue, Nov 16, 2021 at 7:30 AM Gopal Sharma
<gopal.sha...@algonomy.com.invalid> wrote:

> Hi Adrien,
>
> Thanks for the reply.
>
> I am able to retrieve the child docId's using the .ToChildBlockJoinQuery.
> Now for me to do aggregates i need to find the document using
> reader.document(int docID) right?. If that is the case won't getting all
> the documents would be a costly operation and then finally doing the
> aggregates.
>
> Is there any other way around this?
>
> Thanks
> Gopal Sharma
>
>
>
>
>
>
>
> On Mon, Nov 15, 2021 at 10:36 PM Adrien Grand <jpou...@gmail.com> wrote:
>
> > It's not straightforward as we don't provide high-level tooling to do
> this.
> > You need to use the BitSetProducer that you pass to the
> > ToParentBlockJoinQuery in order to resolve the range of child doc IDs
> for a
> > given parent doc ID (see e.g. how ToChildBlockJoinQuery does it), and
> then
> > aggregate over these child doc IDs.
> >
> > On Mon, Nov 15, 2021 at 6:06 AM Gopal Sharma
> > <gopal.sha...@algonomy.com.invalid> wrote:
> >
> > > Hi Team,
> > >
> > > I have a document structure as a customer which itself has few
> attributes
> > > like gender, location etc.
> > >
> > > Each customer will have a list of facts like transaction, product views
> > > etc.
> > >
> > > I want to do an aggregation of the facts. For example find all
> customers
> > > who are from a specific location and have done transactions worth more
> > than
> > > 500$ between two date ranges.
> > >
> > > The queries can go deeper than this.
> > >
> > > Thanks in advance.
> > >
> > > Gopal Sharma
> > >
> >
> >
> > --
> > Adrien
> >
>


-- 
Adrien

Reply via email to