After looking through the unit tests, I got it working. The problem was that I 
thought the parent filter in the ToParentBlockJoinQuery can be used to select a 
subset of parents. It appears that the parent filter must select ALL parents, 
not a subset. This is not explained in the javadoc. If you want to select a 
subset of parents (independently of the child query), ToParentBlockJoinQuery 
can not be used on its own, but rather as a clause in another query.

It would be a nice enhancement to just automatically select all parents, I 
mean, it is already required to be the last document in the block, why do we 
need to provide a query for them?

> On July 3, 2019 at 10:52 AM ANDREI SOLODIN <asolo...@comcast.net> wrote:
> 
> 
>     Thanks Mikhail.
> 
> 
>     I read through the javadoc and thought I was satisfying all the 
> preconditions. Obviously not :-) Is it this part that am I getting wrong: "At 
> search time you provide a Filter identifying the parents, however this Filter 
> must provide an BitSet 
> https://lucene.apache.org/core/8_1_1/core/org/apache/lucene/util/BitSet.html?is-external=true
>  per sub-reader."? If so, given the data above how do I properly create a 
> parent query?
> 
> 
>         > > On July 3, 2019 at 10:30 AM Mikhail Khludnev < m...@apache.org 
> mailto:m...@apache.org > wrote:
> > 
> > 
> >         On Wed, Jul 3, 2019 at 6:11 PM ANDREI SOLODIN < 
> > asolo...@comcast.net mailto:asolo...@comcast.net > wrote:
> > 
> >         >
> > 
> >             > > > This returns "id00003", which is unexpected.
> > > 
> > >         > > 
> >             > > > Please check ToPBJQ javadoc. It's absolutely expected.
> > > 
> > >         > >         --
> >         Sincerely yours
> >         Mikhail Khludnev
> > 
> >     > 


 

Reply via email to