Re: Index-time join ToParentBlockJoinQuery query produces incorrect result

2019-07-05 Thread Mikhail Khludnev
Andrei, it's not clear what's the problem, but if you need to join children to parents and then select only subset of parents you need to combine join with parent filter. Some cases are explained https://lucene.apache.org/solr/guide/8_0/other-parsers.html#OtherParsers-BlockJoinParentQueryParser .

Re: Index-time join ToParentBlockJoinQuery query produces incorrect result

2019-07-05 Thread ANDREI SOLODIN
So you are implying that the parent filter allows subsets. The code at https://github.com/apache/lucene-solr/blob/master/lucene/join/src/java/org/apache/lucene/search/join/CheckJoinIndex.java#L46 implies that subset is not allowed. If I select a subset and invoke the checker, I get this IllegalS

Re: Index-time join ToParentBlockJoinQuery query produces incorrect result

2019-07-03 Thread Michael Sokolov
Well for one thing, you might have other documents in the index that are neither parents nor children (in this particular relation). Also, consider a nested hierarchy - how can we automatically figure out which "generation" or "level" of parent to select? On Wed, Jul 3, 2019 at 2:50 PM ANDREI SOLO

Re: Index-time join ToParentBlockJoinQuery query produces incorrect result

2019-07-03 Thread ANDREI SOLODIN
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

Re: Index-time join ToParentBlockJoinQuery query produces incorrect result

2019-07-03 Thread ANDREI SOLODIN
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

Re: Index-time join ToParentBlockJoinQuery query produces incorrect result

2019-07-03 Thread Mikhail Khludnev
On Wed, Jul 3, 2019 at 6:11 PM ANDREI SOLODIN wrote: > > This returns "id3", which is unexpected. > > Please check ToPBJQ javadoc. It's absolutely expected. -- Sincerely yours Mikhail Khludnev

Index-time join ToParentBlockJoinQuery query produces incorrect result

2019-07-03 Thread ANDREI SOLODIN
Hello, I am trying to understand the requirements for properly using the index-time join. In my use case, I am trying to model a 1-N relationship where parent document could have 0-N child documents. For now I am keeping my data very simple where each child has a single field. So my data right n