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 <susheel2...@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 <joels...@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 <susheel2...@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 <susheel2...@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 >> > > } >> > > ] >> > > } >> > > } >> > > >> > > >> > >> > >