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