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