You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-user@lucene.apache.org by Susheel Kumar <su...@gmail.com> on 2017/06/21 15:29:01 UTC

Complement Stream function - Invalid ReducerStream - substream comparator (sort) must be a superset of this stream's comparator

Hi,

Two issues with complement function (solr 6.6)

1)  When i execute below streaming expression,

==

let(a=fetch(collection1,having(rollup(over=email,
                 count(email),
                select(search(collection1,
                        q=*:*,
                        fl="id,business_email",
                        sort="business_email asc"),
   id,
   business_email as email)),
    eq(count(email),1)),
fl="id,business_email as email",
on="email=business_email"),
b=fetch(collection1,having(rollup(over=email,
                 count(email),
                select(search(collection1,
                        q=*:*,
                        fl="id,personal_email",
                        sort="personal_email asc"),
   id,
   personal_email as email)),
    eq(count(email),1)),
fl="id,personal_email as email",
on="email=personal_email"),
c=hashJoin(get(a),hashed=get(b),on="email"),
d=hashJoin(get(b),hashed=get(a),on="email"),
e=select(get(c),id,email),
f=select(get(d),id,email),
g=sort(get(e),by="id asc,email asc"),
h=sort(get(f),by="id asc,email asc"),
i=complement(get(g),get(h),on="id,email"),
get(i)
)


getting response as

{ "result-set": { "docs": [ { "EXCEPTION": "Invalid ReducerStream -
substream comparator (sort) must be a superset of this stream's
comparator.", "EOF": true } ] } }

2) when i execute below


complement(
  select(search(collection1, q=*:*, fl="id,business_email", sort="id
asc, business_email asc"),id,business_email as email),
  select(search(collection1, q=*:*, fl="id,personal_email", sort="id
asc, personal_email asc"),id,personal_email as email),
  on="id,email"
)

getting response as

{
  "result-set": {
    "docs": [
      {
        "EXCEPTION": "Invalid expression complement(
select(search(collection1, q=*:*, fl=\"id,business_email\", sort=\"id
asc, business_email asc\"),id,business_email as email),
select(search(collection1, q=*:*, fl=\"id,personal_email\", sort=\"id
asc, personal_email asc\"),id,personal_email as email),
on=\"id,email\") - unknown operands found",
        "EOF": true
      }
    ]
  }
}

Re: Complement Stream function - Invalid ReducerStream - substream comparator (sort) must be a superset of this stream's comparator

Posted by Joel Bernstein <jo...@gmail.com>.
I think it makes sense to create a jira ticket.

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

On Thu, Jun 22, 2017 at 2:43 PM, Susheel Kumar <su...@gmail.com>
wrote:

> Please let me know if I shall create a JIRA and i can provide both
> expressions and data to reproduce.
>
> On Thu, Jun 22, 2017 at 11:23 AM, Susheel Kumar <su...@gmail.com>
> wrote:
>
> > Yes, i tried building up expression piece by piece but looks like there
> is
> > an issue with how complement expects / behave for sort.
> >
> > if i use below g and h expr inside complement which are already sorted
> > (sort) then it doesn't work
> >
> > e=select(get(c),id,email),
> > f=select(get(d),id,email),
> > g=sort(get(e),by="id asc,email asc"),
> > h=sort(get(f),by="id asc,email asc"),
> > i=complement(get(g),get(h),on="id,email"),
> >
> > while below worked when i use e and f expr and sort them within
> complement
> > function instead of using g and h directly
> >
> > e=select(get(c),id,email),
> > f=select(get(d),id,email),
> > g=sort(get(e),by="id asc,email asc"),
> > h=sort(get(f),by="id asc,email asc"),
> > i=complement(
> > sort(get(e),by="id asc,email asc"),sort(get(f),by="id asc,email asc")
> > ,on="id,email"),
> >
> > So I am good for now with above approach but running into another issue
> > with empty/null/"Index 0, Size 0" set and will start another thread for
> > that (Need your help there :-)).
> >
> > Appreciate and thanks for all your help while I try to solve my use case
> > using streaming expressions.
> >
> >
> > On Thu, Jun 22, 2017 at 11:10 AM, Joel Bernstein <jo...@gmail.com>
> > wrote:
> >
> >> I suspect something is wrong in the syntax but I'm not seeing it.
> >>
> >> Have you tried building up the expression piece by piece until you get
> the
> >> syntax error?
> >>
> >> Joel Bernstein
> >> http://joelsolr.blogspot.com/
> >>
> >> On Wed, Jun 21, 2017 at 3:20 PM, Susheel Kumar <su...@gmail.com>
> >> wrote:
> >>
> >> > While simple complement works in this way
> >> >
> >> > ===
> >> > complement(merge(sort(select(echo("A"),echo as email),by="email
> asc"),
> >> > sort(select(echo("B"),echo as email),by="email asc"),
> >> > on="email asc"),
> >> > merge(sort(select(echo("A"),echo as email),by="email asc"),
> >> > sort(select(echo("D"),echo as email),by="email asc"),on="email asc"),
> >> > on="email")
> >> >
> >> > BUT below it doesn't work when used in similar way
> >> >
> >> > ===
> >> > let(a=fetch(collection1,having(rollup(over=email,
> >> >                  count(email),
> >> >                 select(search(collection1,
> >> >                         q=*:*,
> >> >                         fl="id,business_email",
> >> >                         sort="business_email asc"),
> >> >    id,
> >> >    business_email as email)),
> >> >     eq(count(email),1)),
> >> > fl="id,business_email as email",
> >> > on="email=business_email"),
> >> > b=fetch(collection1,having(rollup(over=email,
> >> >                  count(email),
> >> >                 select(search(collection1,
> >> >                         q=*:*,
> >> >                         fl="id,personal_email",
> >> >                         sort="personal_email asc"),
> >> >    id,
> >> >    personal_email as email)),
> >> >     eq(count(email),1)),
> >> > fl="id,personal_email as email",
> >> > on="email=personal_email"),
> >> > c=hashJoin(get(a),hashed=get(b),on="email"),
> >> > d=hashJoin(get(b),hashed=get(a),on="email"),
> >> > e=select(get(c),id,email),
> >> > f=select(get(d),id,email),
> >> > g=sort(get(e),by="id asc,email asc"),
> >> > h=sort(get(f),by="id asc,email asc"),
> >> > i=complement(get(g),get(h),on="id,email"),
> >> > get(i)
> >> > )
> >> >
> >> >
> >> > On Wed, Jun 21, 2017 at 11:29 AM, Susheel Kumar <
> susheel2777@gmail.com>
> >> > wrote:
> >> >
> >> > > Hi,
> >> > >
> >> > > Two issues with complement function (solr 6.6)
> >> > >
> >> > > 1)  When i execute below streaming expression,
> >> > >
> >> > > ==
> >> > >
> >> > > let(a=fetch(collection1,having(rollup(over=email,
> >> > >                  count(email),
> >> > >                 select(search(collection1,
> >> > >                         q=*:*,
> >> > >                         fl="id,business_email",
> >> > >                         sort="business_email asc"),
> >> > >    id,
> >> > >    business_email as email)),
> >> > >     eq(count(email),1)),
> >> > > fl="id,business_email as email",
> >> > > on="email=business_email"),
> >> > > b=fetch(collection1,having(rollup(over=email,
> >> > >                  count(email),
> >> > >                 select(search(collection1,
> >> > >                         q=*:*,
> >> > >                         fl="id,personal_email",
> >> > >                         sort="personal_email asc"),
> >> > >    id,
> >> > >    personal_email as email)),
> >> > >     eq(count(email),1)),
> >> > > fl="id,personal_email as email",
> >> > > on="email=personal_email"),
> >> > > c=hashJoin(get(a),hashed=get(b),on="email"),
> >> > > d=hashJoin(get(b),hashed=get(a),on="email"),
> >> > > e=select(get(c),id,email),
> >> > > f=select(get(d),id,email),
> >> > > g=sort(get(e),by="id asc,email asc"),
> >> > > h=sort(get(f),by="id asc,email asc"),
> >> > > i=complement(get(g),get(h),on="id,email"),
> >> > > get(i)
> >> > > )
> >> > >
> >> > >
> >> > > getting response as
> >> > >
> >> > > { "result-set": { "docs": [ { "EXCEPTION": "Invalid ReducerStream -
> >> > > substream comparator (sort) must be a superset of this stream's
> >> > > comparator.", "EOF": true } ] } }
> >> > >
> >> > > 2) when i execute below
> >> > >
> >> > >
> >> > > complement(
> >> > >   select(search(collection1, q=*:*, fl="id,business_email", sort="id
> >> > asc, business_email asc"),id,business_email as email),
> >> > >   select(search(collection1, q=*:*, fl="id,personal_email", sort="id
> >> > asc, personal_email asc"),id,personal_email as email),
> >> > >   on="id,email"
> >> > > )
> >> > >
> >> > > getting response as
> >> > >
> >> > > {
> >> > >   "result-set": {
> >> > >     "docs": [
> >> > >       {
> >> > >         "EXCEPTION": "Invalid expression complement(
> >> > select(search(collection1, q=*:*, fl=\"id,business_email\", sort=\"id
> >> asc,
> >> > business_email asc\"),id,business_email as email),
> >> > select(search(collection1, q=*:*, fl=\"id,personal_email\", sort=\"id
> >> asc,
> >> > personal_email asc\"),id,personal_email as email),  on=\"id,email\") -
> >> > unknown operands found",
> >> > >         "EOF": true
> >> > >       }
> >> > >     ]
> >> > >   }
> >> > > }
> >> > >
> >> > >
> >> >
> >>
> >
> >
>

Re: Complement Stream function - Invalid ReducerStream - substream comparator (sort) must be a superset of this stream's comparator

Posted by Susheel Kumar <su...@gmail.com>.
Please let me know if I shall create a JIRA and i can provide both
expressions and data to reproduce.

On Thu, Jun 22, 2017 at 11:23 AM, Susheel Kumar <su...@gmail.com>
wrote:

> Yes, i tried building up expression piece by piece but looks like there is
> an issue with how complement expects / behave for sort.
>
> if i use below g and h expr inside complement which are already sorted
> (sort) then it doesn't work
>
> e=select(get(c),id,email),
> f=select(get(d),id,email),
> g=sort(get(e),by="id asc,email asc"),
> h=sort(get(f),by="id asc,email asc"),
> i=complement(get(g),get(h),on="id,email"),
>
> while below worked when i use e and f expr and sort them within complement
> function instead of using g and h directly
>
> e=select(get(c),id,email),
> f=select(get(d),id,email),
> g=sort(get(e),by="id asc,email asc"),
> h=sort(get(f),by="id asc,email asc"),
> i=complement(
> sort(get(e),by="id asc,email asc"),sort(get(f),by="id asc,email asc")
> ,on="id,email"),
>
> So I am good for now with above approach but running into another issue
> with empty/null/"Index 0, Size 0" set and will start another thread for
> that (Need your help there :-)).
>
> Appreciate and thanks for all your help while I try to solve my use case
> using streaming expressions.
>
>
> On Thu, Jun 22, 2017 at 11:10 AM, Joel Bernstein <jo...@gmail.com>
> wrote:
>
>> I suspect something is wrong in the syntax but I'm not seeing it.
>>
>> Have you tried building up the expression piece by piece until you get the
>> syntax error?
>>
>> Joel Bernstein
>> http://joelsolr.blogspot.com/
>>
>> On Wed, Jun 21, 2017 at 3:20 PM, Susheel Kumar <su...@gmail.com>
>> wrote:
>>
>> > While simple complement works in this way
>> >
>> > ===
>> > complement(merge(sort(select(echo("A"),echo as email),by="email asc"),
>> > sort(select(echo("B"),echo as email),by="email asc"),
>> > on="email asc"),
>> > merge(sort(select(echo("A"),echo as email),by="email asc"),
>> > sort(select(echo("D"),echo as email),by="email asc"),on="email asc"),
>> > on="email")
>> >
>> > BUT below it doesn't work when used in similar way
>> >
>> > ===
>> > let(a=fetch(collection1,having(rollup(over=email,
>> >                  count(email),
>> >                 select(search(collection1,
>> >                         q=*:*,
>> >                         fl="id,business_email",
>> >                         sort="business_email asc"),
>> >    id,
>> >    business_email as email)),
>> >     eq(count(email),1)),
>> > fl="id,business_email as email",
>> > on="email=business_email"),
>> > b=fetch(collection1,having(rollup(over=email,
>> >                  count(email),
>> >                 select(search(collection1,
>> >                         q=*:*,
>> >                         fl="id,personal_email",
>> >                         sort="personal_email asc"),
>> >    id,
>> >    personal_email as email)),
>> >     eq(count(email),1)),
>> > fl="id,personal_email as email",
>> > on="email=personal_email"),
>> > c=hashJoin(get(a),hashed=get(b),on="email"),
>> > d=hashJoin(get(b),hashed=get(a),on="email"),
>> > e=select(get(c),id,email),
>> > f=select(get(d),id,email),
>> > g=sort(get(e),by="id asc,email asc"),
>> > h=sort(get(f),by="id asc,email asc"),
>> > i=complement(get(g),get(h),on="id,email"),
>> > get(i)
>> > )
>> >
>> >
>> > On Wed, Jun 21, 2017 at 11:29 AM, Susheel Kumar <su...@gmail.com>
>> > wrote:
>> >
>> > > Hi,
>> > >
>> > > Two issues with complement function (solr 6.6)
>> > >
>> > > 1)  When i execute below streaming expression,
>> > >
>> > > ==
>> > >
>> > > let(a=fetch(collection1,having(rollup(over=email,
>> > >                  count(email),
>> > >                 select(search(collection1,
>> > >                         q=*:*,
>> > >                         fl="id,business_email",
>> > >                         sort="business_email asc"),
>> > >    id,
>> > >    business_email as email)),
>> > >     eq(count(email),1)),
>> > > fl="id,business_email as email",
>> > > on="email=business_email"),
>> > > b=fetch(collection1,having(rollup(over=email,
>> > >                  count(email),
>> > >                 select(search(collection1,
>> > >                         q=*:*,
>> > >                         fl="id,personal_email",
>> > >                         sort="personal_email asc"),
>> > >    id,
>> > >    personal_email as email)),
>> > >     eq(count(email),1)),
>> > > fl="id,personal_email as email",
>> > > on="email=personal_email"),
>> > > c=hashJoin(get(a),hashed=get(b),on="email"),
>> > > d=hashJoin(get(b),hashed=get(a),on="email"),
>> > > e=select(get(c),id,email),
>> > > f=select(get(d),id,email),
>> > > g=sort(get(e),by="id asc,email asc"),
>> > > h=sort(get(f),by="id asc,email asc"),
>> > > i=complement(get(g),get(h),on="id,email"),
>> > > get(i)
>> > > )
>> > >
>> > >
>> > > getting response as
>> > >
>> > > { "result-set": { "docs": [ { "EXCEPTION": "Invalid ReducerStream -
>> > > substream comparator (sort) must be a superset of this stream's
>> > > comparator.", "EOF": true } ] } }
>> > >
>> > > 2) when i execute below
>> > >
>> > >
>> > > complement(
>> > >   select(search(collection1, q=*:*, fl="id,business_email", sort="id
>> > asc, business_email asc"),id,business_email as email),
>> > >   select(search(collection1, q=*:*, fl="id,personal_email", sort="id
>> > asc, personal_email asc"),id,personal_email as email),
>> > >   on="id,email"
>> > > )
>> > >
>> > > getting response as
>> > >
>> > > {
>> > >   "result-set": {
>> > >     "docs": [
>> > >       {
>> > >         "EXCEPTION": "Invalid expression complement(
>> > select(search(collection1, q=*:*, fl=\"id,business_email\", sort=\"id
>> asc,
>> > business_email asc\"),id,business_email as email),
>> > select(search(collection1, q=*:*, fl=\"id,personal_email\", sort=\"id
>> asc,
>> > personal_email asc\"),id,personal_email as email),  on=\"id,email\") -
>> > unknown operands found",
>> > >         "EOF": true
>> > >       }
>> > >     ]
>> > >   }
>> > > }
>> > >
>> > >
>> >
>>
>
>

Re: Complement Stream function - Invalid ReducerStream - substream comparator (sort) must be a superset of this stream's comparator

Posted by Susheel Kumar <su...@gmail.com>.
Yes, i tried building up expression piece by piece but looks like there is
an issue with how complement expects / behave for sort.

if i use below g and h expr inside complement which are already sorted
(sort) then it doesn't work

e=select(get(c),id,email),
f=select(get(d),id,email),
g=sort(get(e),by="id asc,email asc"),
h=sort(get(f),by="id asc,email asc"),
i=complement(get(g),get(h),on="id,email"),

while below worked when i use e and f expr and sort them within complement
function instead of using g and h directly

e=select(get(c),id,email),
f=select(get(d),id,email),
g=sort(get(e),by="id asc,email asc"),
h=sort(get(f),by="id asc,email asc"),
i=complement(
sort(get(e),by="id asc,email asc"),sort(get(f),by="id asc,email asc")
,on="id,email"),

So I am good for now with above approach but running into another issue
with empty/null/"Index 0, Size 0" set and will start another thread for
that (Need your help there :-)).

Appreciate and thanks for all your help while I try to solve my use case
using streaming expressions.


On Thu, Jun 22, 2017 at 11:10 AM, Joel Bernstein <jo...@gmail.com> wrote:

> I suspect something is wrong in the syntax but I'm not seeing it.
>
> Have you tried building up the expression piece by piece until you get the
> syntax error?
>
> Joel Bernstein
> http://joelsolr.blogspot.com/
>
> On Wed, Jun 21, 2017 at 3:20 PM, Susheel Kumar <su...@gmail.com>
> wrote:
>
> > While simple complement works in this way
> >
> > ===
> > complement(merge(sort(select(echo("A"),echo as email),by="email asc"),
> > sort(select(echo("B"),echo as email),by="email asc"),
> > on="email asc"),
> > merge(sort(select(echo("A"),echo as email),by="email asc"),
> > sort(select(echo("D"),echo as email),by="email asc"),on="email asc"),
> > on="email")
> >
> > BUT below it doesn't work when used in similar way
> >
> > ===
> > let(a=fetch(collection1,having(rollup(over=email,
> >                  count(email),
> >                 select(search(collection1,
> >                         q=*:*,
> >                         fl="id,business_email",
> >                         sort="business_email asc"),
> >    id,
> >    business_email as email)),
> >     eq(count(email),1)),
> > fl="id,business_email as email",
> > on="email=business_email"),
> > b=fetch(collection1,having(rollup(over=email,
> >                  count(email),
> >                 select(search(collection1,
> >                         q=*:*,
> >                         fl="id,personal_email",
> >                         sort="personal_email asc"),
> >    id,
> >    personal_email as email)),
> >     eq(count(email),1)),
> > fl="id,personal_email as email",
> > on="email=personal_email"),
> > c=hashJoin(get(a),hashed=get(b),on="email"),
> > d=hashJoin(get(b),hashed=get(a),on="email"),
> > e=select(get(c),id,email),
> > f=select(get(d),id,email),
> > g=sort(get(e),by="id asc,email asc"),
> > h=sort(get(f),by="id asc,email asc"),
> > i=complement(get(g),get(h),on="id,email"),
> > get(i)
> > )
> >
> >
> > On Wed, Jun 21, 2017 at 11:29 AM, Susheel Kumar <su...@gmail.com>
> > wrote:
> >
> > > Hi,
> > >
> > > Two issues with complement function (solr 6.6)
> > >
> > > 1)  When i execute below streaming expression,
> > >
> > > ==
> > >
> > > let(a=fetch(collection1,having(rollup(over=email,
> > >                  count(email),
> > >                 select(search(collection1,
> > >                         q=*:*,
> > >                         fl="id,business_email",
> > >                         sort="business_email asc"),
> > >    id,
> > >    business_email as email)),
> > >     eq(count(email),1)),
> > > fl="id,business_email as email",
> > > on="email=business_email"),
> > > b=fetch(collection1,having(rollup(over=email,
> > >                  count(email),
> > >                 select(search(collection1,
> > >                         q=*:*,
> > >                         fl="id,personal_email",
> > >                         sort="personal_email asc"),
> > >    id,
> > >    personal_email as email)),
> > >     eq(count(email),1)),
> > > fl="id,personal_email as email",
> > > on="email=personal_email"),
> > > c=hashJoin(get(a),hashed=get(b),on="email"),
> > > d=hashJoin(get(b),hashed=get(a),on="email"),
> > > e=select(get(c),id,email),
> > > f=select(get(d),id,email),
> > > g=sort(get(e),by="id asc,email asc"),
> > > h=sort(get(f),by="id asc,email asc"),
> > > i=complement(get(g),get(h),on="id,email"),
> > > get(i)
> > > )
> > >
> > >
> > > getting response as
> > >
> > > { "result-set": { "docs": [ { "EXCEPTION": "Invalid ReducerStream -
> > > substream comparator (sort) must be a superset of this stream's
> > > comparator.", "EOF": true } ] } }
> > >
> > > 2) when i execute below
> > >
> > >
> > > complement(
> > >   select(search(collection1, q=*:*, fl="id,business_email", sort="id
> > asc, business_email asc"),id,business_email as email),
> > >   select(search(collection1, q=*:*, fl="id,personal_email", sort="id
> > asc, personal_email asc"),id,personal_email as email),
> > >   on="id,email"
> > > )
> > >
> > > getting response as
> > >
> > > {
> > >   "result-set": {
> > >     "docs": [
> > >       {
> > >         "EXCEPTION": "Invalid expression complement(
> > select(search(collection1, q=*:*, fl=\"id,business_email\", sort=\"id
> asc,
> > business_email asc\"),id,business_email as email),
> > select(search(collection1, q=*:*, fl=\"id,personal_email\", sort=\"id
> asc,
> > personal_email asc\"),id,personal_email as email),  on=\"id,email\") -
> > unknown operands found",
> > >         "EOF": true
> > >       }
> > >     ]
> > >   }
> > > }
> > >
> > >
> >
>

Re: Complement Stream function - Invalid ReducerStream - substream comparator (sort) must be a superset of this stream's comparator

Posted by Joel Bernstein <jo...@gmail.com>.
I suspect something is wrong in the syntax but I'm not seeing it.

Have you tried building up the expression piece by piece until you get the
syntax error?

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

On Wed, Jun 21, 2017 at 3:20 PM, Susheel Kumar <su...@gmail.com>
wrote:

> While simple complement works in this way
>
> ===
> complement(merge(sort(select(echo("A"),echo as email),by="email asc"),
> sort(select(echo("B"),echo as email),by="email asc"),
> on="email asc"),
> merge(sort(select(echo("A"),echo as email),by="email asc"),
> sort(select(echo("D"),echo as email),by="email asc"),on="email asc"),
> on="email")
>
> BUT below it doesn't work when used in similar way
>
> ===
> let(a=fetch(collection1,having(rollup(over=email,
>                  count(email),
>                 select(search(collection1,
>                         q=*:*,
>                         fl="id,business_email",
>                         sort="business_email asc"),
>    id,
>    business_email as email)),
>     eq(count(email),1)),
> fl="id,business_email as email",
> on="email=business_email"),
> b=fetch(collection1,having(rollup(over=email,
>                  count(email),
>                 select(search(collection1,
>                         q=*:*,
>                         fl="id,personal_email",
>                         sort="personal_email asc"),
>    id,
>    personal_email as email)),
>     eq(count(email),1)),
> fl="id,personal_email as email",
> on="email=personal_email"),
> c=hashJoin(get(a),hashed=get(b),on="email"),
> d=hashJoin(get(b),hashed=get(a),on="email"),
> e=select(get(c),id,email),
> f=select(get(d),id,email),
> g=sort(get(e),by="id asc,email asc"),
> h=sort(get(f),by="id asc,email asc"),
> i=complement(get(g),get(h),on="id,email"),
> get(i)
> )
>
>
> On Wed, Jun 21, 2017 at 11:29 AM, Susheel Kumar <su...@gmail.com>
> wrote:
>
> > Hi,
> >
> > Two issues with complement function (solr 6.6)
> >
> > 1)  When i execute below streaming expression,
> >
> > ==
> >
> > let(a=fetch(collection1,having(rollup(over=email,
> >                  count(email),
> >                 select(search(collection1,
> >                         q=*:*,
> >                         fl="id,business_email",
> >                         sort="business_email asc"),
> >    id,
> >    business_email as email)),
> >     eq(count(email),1)),
> > fl="id,business_email as email",
> > on="email=business_email"),
> > b=fetch(collection1,having(rollup(over=email,
> >                  count(email),
> >                 select(search(collection1,
> >                         q=*:*,
> >                         fl="id,personal_email",
> >                         sort="personal_email asc"),
> >    id,
> >    personal_email as email)),
> >     eq(count(email),1)),
> > fl="id,personal_email as email",
> > on="email=personal_email"),
> > c=hashJoin(get(a),hashed=get(b),on="email"),
> > d=hashJoin(get(b),hashed=get(a),on="email"),
> > e=select(get(c),id,email),
> > f=select(get(d),id,email),
> > g=sort(get(e),by="id asc,email asc"),
> > h=sort(get(f),by="id asc,email asc"),
> > i=complement(get(g),get(h),on="id,email"),
> > get(i)
> > )
> >
> >
> > getting response as
> >
> > { "result-set": { "docs": [ { "EXCEPTION": "Invalid ReducerStream -
> > substream comparator (sort) must be a superset of this stream's
> > comparator.", "EOF": true } ] } }
> >
> > 2) when i execute below
> >
> >
> > complement(
> >   select(search(collection1, q=*:*, fl="id,business_email", sort="id
> asc, business_email asc"),id,business_email as email),
> >   select(search(collection1, q=*:*, fl="id,personal_email", sort="id
> asc, personal_email asc"),id,personal_email as email),
> >   on="id,email"
> > )
> >
> > getting response as
> >
> > {
> >   "result-set": {
> >     "docs": [
> >       {
> >         "EXCEPTION": "Invalid expression complement(
> select(search(collection1, q=*:*, fl=\"id,business_email\", sort=\"id asc,
> business_email asc\"),id,business_email as email),
> select(search(collection1, q=*:*, fl=\"id,personal_email\", sort=\"id asc,
> personal_email asc\"),id,personal_email as email),  on=\"id,email\") -
> unknown operands found",
> >         "EOF": true
> >       }
> >     ]
> >   }
> > }
> >
> >
>

Re: Complement Stream function - Invalid ReducerStream - substream comparator (sort) must be a superset of this stream's comparator

Posted by Susheel Kumar <su...@gmail.com>.
While simple complement works in this way

===
complement(merge(sort(select(echo("A"),echo as email),by="email asc"),
sort(select(echo("B"),echo as email),by="email asc"),
on="email asc"),
merge(sort(select(echo("A"),echo as email),by="email asc"),
sort(select(echo("D"),echo as email),by="email asc"),on="email asc"),
on="email")

BUT below it doesn't work when used in similar way

===
let(a=fetch(collection1,having(rollup(over=email,
                 count(email),
                select(search(collection1,
                        q=*:*,
                        fl="id,business_email",
                        sort="business_email asc"),
   id,
   business_email as email)),
    eq(count(email),1)),
fl="id,business_email as email",
on="email=business_email"),
b=fetch(collection1,having(rollup(over=email,
                 count(email),
                select(search(collection1,
                        q=*:*,
                        fl="id,personal_email",
                        sort="personal_email asc"),
   id,
   personal_email as email)),
    eq(count(email),1)),
fl="id,personal_email as email",
on="email=personal_email"),
c=hashJoin(get(a),hashed=get(b),on="email"),
d=hashJoin(get(b),hashed=get(a),on="email"),
e=select(get(c),id,email),
f=select(get(d),id,email),
g=sort(get(e),by="id asc,email asc"),
h=sort(get(f),by="id asc,email asc"),
i=complement(get(g),get(h),on="id,email"),
get(i)
)


On Wed, Jun 21, 2017 at 11:29 AM, Susheel Kumar <su...@gmail.com>
wrote:

> Hi,
>
> Two issues with complement function (solr 6.6)
>
> 1)  When i execute below streaming expression,
>
> ==
>
> let(a=fetch(collection1,having(rollup(over=email,
>                  count(email),
>                 select(search(collection1,
>                         q=*:*,
>                         fl="id,business_email",
>                         sort="business_email asc"),
>    id,
>    business_email as email)),
>     eq(count(email),1)),
> fl="id,business_email as email",
> on="email=business_email"),
> b=fetch(collection1,having(rollup(over=email,
>                  count(email),
>                 select(search(collection1,
>                         q=*:*,
>                         fl="id,personal_email",
>                         sort="personal_email asc"),
>    id,
>    personal_email as email)),
>     eq(count(email),1)),
> fl="id,personal_email as email",
> on="email=personal_email"),
> c=hashJoin(get(a),hashed=get(b),on="email"),
> d=hashJoin(get(b),hashed=get(a),on="email"),
> e=select(get(c),id,email),
> f=select(get(d),id,email),
> g=sort(get(e),by="id asc,email asc"),
> h=sort(get(f),by="id asc,email asc"),
> i=complement(get(g),get(h),on="id,email"),
> get(i)
> )
>
>
> getting response as
>
> { "result-set": { "docs": [ { "EXCEPTION": "Invalid ReducerStream -
> substream comparator (sort) must be a superset of this stream's
> comparator.", "EOF": true } ] } }
>
> 2) when i execute below
>
>
> complement(
>   select(search(collection1, q=*:*, fl="id,business_email", sort="id asc, business_email asc"),id,business_email as email),
>   select(search(collection1, q=*:*, fl="id,personal_email", sort="id asc, personal_email asc"),id,personal_email as email),
>   on="id,email"
> )
>
> getting response as
>
> {
>   "result-set": {
>     "docs": [
>       {
>         "EXCEPTION": "Invalid expression complement(  select(search(collection1, q=*:*, fl=\"id,business_email\", sort=\"id asc, business_email asc\"),id,business_email as email),  select(search(collection1, q=*:*, fl=\"id,personal_email\", sort=\"id asc, personal_email asc\"),id,personal_email as email),  on=\"id,email\") - unknown operands found",
>         "EOF": true
>       }
>     ]
>   }
> }
>
>