Hi,

> Am 08.06.2018 um 03:42 schrieb Joel Bernstein <joels...@gmail.com>:
> 
> And when you transpose the "on" fields like this:
> 
> intersect(
> cartesianProduct(tuple(fieldA=array(a,b,c,c)), fieldA, productSort="fieldA
> asc"),
> cartesianProduct(tuple(fieldB=array(a,c)), fieldB, productSort="fieldB
> asc"),
> on="fieldB=fieldA"
> )
> 
> It also works.


No, IIUC this does not work correctly. 

I had tried this before posting my original question.
That version emits the documents from the left stream
but does not filter out the document with fieldA == b.

This might be due to the fact that fieldB is not present in the left stream
and fieldA is not present in the right stream; it compares two
empty values (null?) and comes to the conclusion that they are equal.
Could that be the reason?



> So, yes there is a bug where the fields are being transposed with intersect
> function's "on" fields. The same issue was happening with joins and may
> have been resolved. I'll do little more research into this.

Thanks for your work on this!


Best regards
Christian Spitzlay





> Joel Bernstein
> http://joelsolr.blogspot.com/
> 
> On Thu, Jun 7, 2018 at 9:29 AM, Christian Spitzlay <
> christian.spitz...@biologis.com> wrote:
> 
>> 
>> 
>>> Am 07.06.2018 um 11:34 schrieb Christian Spitzlay <
>> christian.spitz...@biologis.com>:
>>> 
>>> intersect(
>>> cartesianProduct(tuple(fieldA=array(a,b,c,c)), fieldA,
>> productSort="fieldA asc"),
>>> cartesianProduct(tuple(fieldB=array(a,c)), fieldB, productSort="fieldB
>> asc"),
>>> on="fieldA=fieldB"
>>> )
>>> 
>>> I simplified it a bit, too. I still get one document with fieldA == a.
>>> I would have expected three documents in the output, one with fieldA ==
>> a and two with fieldB == c.
>> 
>> That should have read ā€žā€¦ and two with fieldA == cā€œ of course.
>> 
>> 
>> 
>> 

Reply via email to