yes, I was going to suggest that as well.

Joel Bernstein
http://joelsolr.blogspot.com/

On Fri, Jun 8, 2018 at 9:20 AM, Christian Spitzlay <
christian.spitz...@biologis.com> wrote:

> As a temporary workaround until that issue is fixed
> one could wrap the right stream with a select that renames the field:
>
> intersect(
> cartesianProduct(tuple(fieldA=array(a,b,c,c)), fieldA,
> productSort="fieldA asc"),
> select(cartesianProduct(tuple(fieldB=array(a,c)), fieldB,
> productSort="fieldB asc"), fieldB as fieldA),
> on=fieldA
> )
>
>
>
> > Am 08.06.2018 um 14:42 schrieb Joel Bernstein <joels...@gmail.com>:
> >
> > You're correct, after testing again the only way that this works
> correctly
> > appears to be:
> >
> > intersect(
> > cartesianProduct(tuple(fieldA=array(a,b,c,c)), fieldA,
> productSort="fieldA
> > asc"),
> > cartesianProduct(tuple(fieldA=array(a,c)), fieldA, productSort="fieldA
> > asc"),
> > on="fieldA"
> > )
> >
> > I suspect that there are only test cases that cover this scenario as
> well.
> > I'll create a jira issue for this.
> >
> >
> >
> >
> > Joel Bernstein
> > http://joelsolr.blogspot.com/
> >
> > On Fri, Jun 8, 2018 at 3:41 AM, Christian Spitzlay <
> > christian.spitz...@biologis.com> wrote:
> >
> >> 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