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 Markko Legonkov <ma...@gmail.com> on 2016/10/01 18:29:43 UTC
How to use StreamingApi MultiFieldComparator?
Hi
What i would like to achieve is that i want to filter out all products
which have different prices on two given dates.
Here is a sample expression
leftOuterJoin(
search(
products,
q="*:*",
fq="product_id_i:1 AND product_name_s:test",
fl="id, product_id_i, product_name_s,sale_price_d",
sort="product_id_i asc"
),
select(
search(
products,
q="product_id_i:1 AND product_name_s:Test",
fl="id, product_id_i, product_name_s,sale_price_d",
sort="product_id_i asc"
),
id as c_id,
product_id_i as c_product_id_i,
product_name_s as c_product_name_s,
sale_price_d as c_sale_price_d
),
on="product_id_i=c_product_id_i, sale_price_d!=c_sale_price_d"
)
I am using solr 6.2.0
And the result i get from solr is:
{
"result-set": {
"docs": [
{
"EXCEPTION": "org.apache.solr.client.solrj.io.comp.FieldComparator
cannot be cast to
org.apache.solr.client.solrj.io.comp.MultipleFieldComparator",
"EOF": true
}
]
}
}
Do i have to configure something in solr that it knows it has to use
MultipleFieldComparator?
Regards
Max
Re: How to use StreamingApi MultiFieldComparator?
Posted by Markko Legonkov <ma...@gmail.com>.
the problem is in MultipleFieldEqualitor
@Override
public boolean isDerivedFrom(StreamComparator base){
if(null == base){ return false; }
if(base instanceof StreamComparator){
MultipleFieldComparator baseComps = (MultipleFieldComparator)base;
if(baseComps.getComps().length >= eqs.length){
for(int idx = 0; idx < eqs.length; ++idx){
if(!eqs[idx].isDerivedFrom(baseComps.getComps()[idx])){
return false;
}
}
return true;
}
}
return false;
}
it is called from ComplementStream
private void init(TupleStream streamA, TupleStream streamB, StreamEqualitor
eq) throws IOException {
this.streamA = new PushBackStream(streamA);
this.streamB = new PushBackStream(new UniqueStream(streamB, eq));
this.originalStreamB = streamB; // hold onto this for toExpression
this.eq = eq;
// streamA and streamB must both be sorted so that comp can be derived from
if(!eq.isDerivedFrom(streamA.getStreamSort()) || !eq.isDerivedFrom(streamB.
getStreamSort())){
throw new IOException("Invalid ComplementStream - both substream
comparators (sort) must be a superset of this stream's equalitor.");
}
}
If streamA.getStreamSort() or streamB.getStreamSort() returns
FieldComparator, then we get this casting exception.
Anyway.. if i add another sort field to search expressions, it works!
Is it bug or a feature?
max
On Mon, Oct 3, 2016 at 4:12 PM, Joel Bernstein <jo...@gmail.com> wrote:
> Ok, I'll test this out.
>
> Joel Bernstein
> http://joelsolr.blogspot.com/
>
> On Mon, Oct 3, 2016 at 4:40 AM, Markko Legonkov <ma...@gmail.com> wrote:
>
> > here is the stacktrace
> >
> > java.io.IOException: Unable to construct instance of
> > org.apache.solr.client.solrj.io.stream.ComplementStream
> > at org.apache.solr.client.solrj.io.stream.expr.StreamFactory.
> > createInstance(StreamFactory.java:323)
> > at org.apache.solr.client.solrj.io.stream.expr.StreamFactory.
> > constructStream(StreamFactory.java:185)
> > at org.apache.solr.client.solrj.io.stream.expr.StreamFactory.
> > constructStream(StreamFactory.java:178)
> > at org.apache.solr.handler.StreamHandler.handleRequestBody(
> > StreamHandler.java:185)
> > at org.apache.solr.handler.RequestHandlerBase.handleRequest(
> > RequestHandlerBase.java:154)
> > at org.apache.solr.core.SolrCore.execute(SolrCore.java:2089)
> > at org.apache.solr.servlet.HttpSolrCall.execute(
> > HttpSolrCall.java:652)
> > at org.apache.solr.servlet.HttpSolrCall.call(
> > HttpSolrCall.java:459)
> > at org.apache.solr.servlet.SolrDispatchFilter.doFilter(
> > SolrDispatchFilter.java:257)
> > at org.apache.solr.servlet.SolrDispatchFilter.doFilter(
> > SolrDispatchFilter.java:208)
> > at org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> > doFilter(ServletHandler.java:1668)
> > at org.eclipse.jetty.servlet.ServletHandler.doHandle(
> > ServletHandler.java:581)
> > at org.eclipse.jetty.server.handler.ScopedHandler.handle(
> > ScopedHandler.java:143)
> > at org.eclipse.jetty.security.SecurityHandler.handle(
> > SecurityHandler.java:548)
> > at org.eclipse.jetty.server.session.SessionHandler.
> > doHandle(SessionHandler.java:226)
> > at org.eclipse.jetty.server.handler.ContextHandler.
> > doHandle(ContextHandler.java:1160)
> > at org.eclipse.jetty.servlet.ServletHandler.doScope(
> > ServletHandler.java:511)
> > at org.eclipse.jetty.server.session.SessionHandler.
> > doScope(SessionHandler.java:185)
> > at org.eclipse.jetty.server.handler.ContextHandler.
> > doScope(ContextHandler.java:1092)
> > at org.eclipse.jetty.server.handler.ScopedHandler.handle(
> > ScopedHandler.java:141)
> > at org.eclipse.jetty.server.handler.ContextHandlerCollection.
> > handle(ContextHandlerCollection.java:213)
> > at org.eclipse.jetty.server.handler.HandlerCollection.
> > handle(HandlerCollection.java:119)
> > at org.eclipse.jetty.server.handler.HandlerWrapper.handle(
> > HandlerWrapper.java:134)
> > at org.eclipse.jetty.server.Server.handle(Server.java:518)
> > at org.eclipse.jetty.server.HttpChannel.handle(
> > HttpChannel.java:308)
> > at org.eclipse.jetty.server.HttpConnection.onFillable(
> > HttpConnection.java:244)
> > at org.eclipse.jetty.io.AbstractConnection$
> ReadCallback.succeeded(
> > AbstractConnection.java:273)
> > at org.eclipse.jetty.io.FillInterest.fillable(
> > FillInterest.java:95)
> > at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(
> > SelectChannelEndPoint.java:93)
> > at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.
> > produceAndRun(ExecuteProduceConsume.java:246)
> > at org.eclipse.jetty.util.thread.strategy.
> > ExecuteProduceConsume.run(ExecuteProduceConsume.java:156)
> > at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(
> > QueuedThreadPool.java:654)
> > at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(
> > QueuedThreadPool.java:572)
> > at java.lang.Thread.run(Thread.java:745)
> > Caused by: java.lang.reflect.InvocationTargetException
> > at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> > Method)
> > at sun.reflect.NativeConstructorAccessorImpl.newInstance(
> > NativeConstructorAccessorImpl.java:62)
> > at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(
> > DelegatingConstructorAccessorImpl.java:45)
> > at java.lang.reflect.Constructor.newInstance(Constructor.java:
> 422)
> > at org.apache.solr.client.solrj.io.stream.expr.StreamFactory.
> > createInstance(StreamFactory.java:316)
> > ... 33 more
> > Caused by: java.lang.ClassCastException:
> > org.apache.solr.client.solrj.io.comp.FieldComparator cannot be cast to
> > org.apache.solr.client.solrj.io.comp.MultipleFieldComparator
> > at org.apache.solr.client.solrj.io.eq.MultipleFieldEqualitor.
> > isDerivedFrom(MultipleFieldEqualitor.java:99)
> > at org.apache.solr.client.solrj.io.stream.ReducerStream.init(
> > ReducerStream.java:132)
> > at org.apache.solr.client.solrj.io.stream.ReducerStream.<init>
> > (ReducerStream.java:69)
> > at org.apache.solr.client.solrj.io.stream.UniqueStream.init(
> > UniqueStream.java:83)
> > at org.apache.solr.client.solrj.io.stream.UniqueStream.<init>(
> > UniqueStream.java:55)
> > at org.apache.solr.client.solrj.io.stream.ComplementStream.
> > init(ComplementStream.java:81)
> > at org.apache.solr.client.solrj.io.stream.ComplementStream.<
> > init>(ComplementStream.java:73)
> > ... 38 more
> >
> >
> > On Sun, Oct 2, 2016 at 12:59 AM, Joel Bernstein <jo...@gmail.com>
> > wrote:
> >
> > > Hi can you attach the stack traces in the logs? I'd like to see where
> > this
> > > exception coming, this appears to be a bug.
> > >
> > > I'll also need to dig into your expression and see if there is an issue
> > > with the syntax.
> > >
> > > Joel Bernstein
> > > http://joelsolr.blogspot.com/
> > >
> > > On Sat, Oct 1, 2016 at 2:29 PM, Markko Legonkov <ma...@gmail.com>
> > wrote:
> > >
> > > > Hi
> > > >
> > > > What i would like to achieve is that i want to filter out all
> products
> > > > which have different prices on two given dates.
> > > > Here is a sample expression
> > > >
> > > > leftOuterJoin(
> > > > search(
> > > > products,
> > > > q="*:*",
> > > > fq="product_id_i:1 AND product_name_s:test",
> > > > fl="id, product_id_i, product_name_s,sale_price_d",
> > > > sort="product_id_i asc"
> > > > ),
> > > > select(
> > > > search(
> > > > products,
> > > > q="product_id_i:1 AND product_name_s:Test",
> > > > fl="id, product_id_i, product_name_s,sale_price_d",
> > > > sort="product_id_i asc"
> > > > ),
> > > > id as c_id,
> > > > product_id_i as c_product_id_i,
> > > > product_name_s as c_product_name_s,
> > > > sale_price_d as c_sale_price_d
> > > > ),
> > > > on="product_id_i=c_product_id_i, sale_price_d!=c_sale_price_d"
> > > > )
> > > >
> > > > I am using solr 6.2.0
> > > > And the result i get from solr is:
> > > > {
> > > > "result-set": {
> > > > "docs": [
> > > > {
> > > > "EXCEPTION": "org.apache.solr.client.solrj.
> > > io.comp.FieldComparator
> > > > cannot be cast to
> > > > org.apache.solr.client.solrj.io.comp.MultipleFieldComparator",
> > > > "EOF": true
> > > > }
> > > > ]
> > > > }
> > > > }
> > > >
> > > > Do i have to configure something in solr that it knows it has to use
> > > > MultipleFieldComparator?
> > > >
> > > > Regards
> > > > Max
> > > >
> > >
> >
>
Re: How to use StreamingApi MultiFieldComparator?
Posted by Joel Bernstein <jo...@gmail.com>.
Ok, I'll test this out.
Joel Bernstein
http://joelsolr.blogspot.com/
On Mon, Oct 3, 2016 at 4:40 AM, Markko Legonkov <ma...@gmail.com> wrote:
> here is the stacktrace
>
> java.io.IOException: Unable to construct instance of
> org.apache.solr.client.solrj.io.stream.ComplementStream
> at org.apache.solr.client.solrj.io.stream.expr.StreamFactory.
> createInstance(StreamFactory.java:323)
> at org.apache.solr.client.solrj.io.stream.expr.StreamFactory.
> constructStream(StreamFactory.java:185)
> at org.apache.solr.client.solrj.io.stream.expr.StreamFactory.
> constructStream(StreamFactory.java:178)
> at org.apache.solr.handler.StreamHandler.handleRequestBody(
> StreamHandler.java:185)
> at org.apache.solr.handler.RequestHandlerBase.handleRequest(
> RequestHandlerBase.java:154)
> at org.apache.solr.core.SolrCore.execute(SolrCore.java:2089)
> at org.apache.solr.servlet.HttpSolrCall.execute(
> HttpSolrCall.java:652)
> at org.apache.solr.servlet.HttpSolrCall.call(
> HttpSolrCall.java:459)
> at org.apache.solr.servlet.SolrDispatchFilter.doFilter(
> SolrDispatchFilter.java:257)
> at org.apache.solr.servlet.SolrDispatchFilter.doFilter(
> SolrDispatchFilter.java:208)
> at org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> doFilter(ServletHandler.java:1668)
> at org.eclipse.jetty.servlet.ServletHandler.doHandle(
> ServletHandler.java:581)
> at org.eclipse.jetty.server.handler.ScopedHandler.handle(
> ScopedHandler.java:143)
> at org.eclipse.jetty.security.SecurityHandler.handle(
> SecurityHandler.java:548)
> at org.eclipse.jetty.server.session.SessionHandler.
> doHandle(SessionHandler.java:226)
> at org.eclipse.jetty.server.handler.ContextHandler.
> doHandle(ContextHandler.java:1160)
> at org.eclipse.jetty.servlet.ServletHandler.doScope(
> ServletHandler.java:511)
> at org.eclipse.jetty.server.session.SessionHandler.
> doScope(SessionHandler.java:185)
> at org.eclipse.jetty.server.handler.ContextHandler.
> doScope(ContextHandler.java:1092)
> at org.eclipse.jetty.server.handler.ScopedHandler.handle(
> ScopedHandler.java:141)
> at org.eclipse.jetty.server.handler.ContextHandlerCollection.
> handle(ContextHandlerCollection.java:213)
> at org.eclipse.jetty.server.handler.HandlerCollection.
> handle(HandlerCollection.java:119)
> at org.eclipse.jetty.server.handler.HandlerWrapper.handle(
> HandlerWrapper.java:134)
> at org.eclipse.jetty.server.Server.handle(Server.java:518)
> at org.eclipse.jetty.server.HttpChannel.handle(
> HttpChannel.java:308)
> at org.eclipse.jetty.server.HttpConnection.onFillable(
> HttpConnection.java:244)
> at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(
> AbstractConnection.java:273)
> at org.eclipse.jetty.io.FillInterest.fillable(
> FillInterest.java:95)
> at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(
> SelectChannelEndPoint.java:93)
> at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.
> produceAndRun(ExecuteProduceConsume.java:246)
> at org.eclipse.jetty.util.thread.strategy.
> ExecuteProduceConsume.run(ExecuteProduceConsume.java:156)
> at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(
> QueuedThreadPool.java:654)
> at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(
> QueuedThreadPool.java:572)
> at java.lang.Thread.run(Thread.java:745)
> Caused by: java.lang.reflect.InvocationTargetException
> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> Method)
> at sun.reflect.NativeConstructorAccessorImpl.newInstance(
> NativeConstructorAccessorImpl.java:62)
> at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(
> DelegatingConstructorAccessorImpl.java:45)
> at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
> at org.apache.solr.client.solrj.io.stream.expr.StreamFactory.
> createInstance(StreamFactory.java:316)
> ... 33 more
> Caused by: java.lang.ClassCastException:
> org.apache.solr.client.solrj.io.comp.FieldComparator cannot be cast to
> org.apache.solr.client.solrj.io.comp.MultipleFieldComparator
> at org.apache.solr.client.solrj.io.eq.MultipleFieldEqualitor.
> isDerivedFrom(MultipleFieldEqualitor.java:99)
> at org.apache.solr.client.solrj.io.stream.ReducerStream.init(
> ReducerStream.java:132)
> at org.apache.solr.client.solrj.io.stream.ReducerStream.<init>
> (ReducerStream.java:69)
> at org.apache.solr.client.solrj.io.stream.UniqueStream.init(
> UniqueStream.java:83)
> at org.apache.solr.client.solrj.io.stream.UniqueStream.<init>(
> UniqueStream.java:55)
> at org.apache.solr.client.solrj.io.stream.ComplementStream.
> init(ComplementStream.java:81)
> at org.apache.solr.client.solrj.io.stream.ComplementStream.<
> init>(ComplementStream.java:73)
> ... 38 more
>
>
> On Sun, Oct 2, 2016 at 12:59 AM, Joel Bernstein <jo...@gmail.com>
> wrote:
>
> > Hi can you attach the stack traces in the logs? I'd like to see where
> this
> > exception coming, this appears to be a bug.
> >
> > I'll also need to dig into your expression and see if there is an issue
> > with the syntax.
> >
> > Joel Bernstein
> > http://joelsolr.blogspot.com/
> >
> > On Sat, Oct 1, 2016 at 2:29 PM, Markko Legonkov <ma...@gmail.com>
> wrote:
> >
> > > Hi
> > >
> > > What i would like to achieve is that i want to filter out all products
> > > which have different prices on two given dates.
> > > Here is a sample expression
> > >
> > > leftOuterJoin(
> > > search(
> > > products,
> > > q="*:*",
> > > fq="product_id_i:1 AND product_name_s:test",
> > > fl="id, product_id_i, product_name_s,sale_price_d",
> > > sort="product_id_i asc"
> > > ),
> > > select(
> > > search(
> > > products,
> > > q="product_id_i:1 AND product_name_s:Test",
> > > fl="id, product_id_i, product_name_s,sale_price_d",
> > > sort="product_id_i asc"
> > > ),
> > > id as c_id,
> > > product_id_i as c_product_id_i,
> > > product_name_s as c_product_name_s,
> > > sale_price_d as c_sale_price_d
> > > ),
> > > on="product_id_i=c_product_id_i, sale_price_d!=c_sale_price_d"
> > > )
> > >
> > > I am using solr 6.2.0
> > > And the result i get from solr is:
> > > {
> > > "result-set": {
> > > "docs": [
> > > {
> > > "EXCEPTION": "org.apache.solr.client.solrj.
> > io.comp.FieldComparator
> > > cannot be cast to
> > > org.apache.solr.client.solrj.io.comp.MultipleFieldComparator",
> > > "EOF": true
> > > }
> > > ]
> > > }
> > > }
> > >
> > > Do i have to configure something in solr that it knows it has to use
> > > MultipleFieldComparator?
> > >
> > > Regards
> > > Max
> > >
> >
>
Re: How to use StreamingApi MultiFieldComparator?
Posted by Markko Legonkov <ma...@gmail.com>.
here is the stacktrace
java.io.IOException: Unable to construct instance of
org.apache.solr.client.solrj.io.stream.ComplementStream
at org.apache.solr.client.solrj.io.stream.expr.StreamFactory.createInstance(StreamFactory.java:323)
at org.apache.solr.client.solrj.io.stream.expr.StreamFactory.constructStream(StreamFactory.java:185)
at org.apache.solr.client.solrj.io.stream.expr.StreamFactory.constructStream(StreamFactory.java:178)
at org.apache.solr.handler.StreamHandler.handleRequestBody(StreamHandler.java:185)
at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:154)
at org.apache.solr.core.SolrCore.execute(SolrCore.java:2089)
at org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:652)
at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:459)
at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:257)
at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:208)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1160)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1092)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:119)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
at org.eclipse.jetty.server.Server.handle(Server.java:518)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:244)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)
at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93)
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:246)
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:156)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
at org.apache.solr.client.solrj.io.stream.expr.StreamFactory.createInstance(StreamFactory.java:316)
... 33 more
Caused by: java.lang.ClassCastException:
org.apache.solr.client.solrj.io.comp.FieldComparator cannot be cast to
org.apache.solr.client.solrj.io.comp.MultipleFieldComparator
at org.apache.solr.client.solrj.io.eq.MultipleFieldEqualitor.isDerivedFrom(MultipleFieldEqualitor.java:99)
at org.apache.solr.client.solrj.io.stream.ReducerStream.init(ReducerStream.java:132)
at org.apache.solr.client.solrj.io.stream.ReducerStream.<init>(ReducerStream.java:69)
at org.apache.solr.client.solrj.io.stream.UniqueStream.init(UniqueStream.java:83)
at org.apache.solr.client.solrj.io.stream.UniqueStream.<init>(UniqueStream.java:55)
at org.apache.solr.client.solrj.io.stream.ComplementStream.init(ComplementStream.java:81)
at org.apache.solr.client.solrj.io.stream.ComplementStream.<init>(ComplementStream.java:73)
... 38 more
On Sun, Oct 2, 2016 at 12:59 AM, Joel Bernstein <jo...@gmail.com> wrote:
> Hi can you attach the stack traces in the logs? I'd like to see where this
> exception coming, this appears to be a bug.
>
> I'll also need to dig into your expression and see if there is an issue
> with the syntax.
>
> Joel Bernstein
> http://joelsolr.blogspot.com/
>
> On Sat, Oct 1, 2016 at 2:29 PM, Markko Legonkov <ma...@gmail.com> wrote:
>
> > Hi
> >
> > What i would like to achieve is that i want to filter out all products
> > which have different prices on two given dates.
> > Here is a sample expression
> >
> > leftOuterJoin(
> > search(
> > products,
> > q="*:*",
> > fq="product_id_i:1 AND product_name_s:test",
> > fl="id, product_id_i, product_name_s,sale_price_d",
> > sort="product_id_i asc"
> > ),
> > select(
> > search(
> > products,
> > q="product_id_i:1 AND product_name_s:Test",
> > fl="id, product_id_i, product_name_s,sale_price_d",
> > sort="product_id_i asc"
> > ),
> > id as c_id,
> > product_id_i as c_product_id_i,
> > product_name_s as c_product_name_s,
> > sale_price_d as c_sale_price_d
> > ),
> > on="product_id_i=c_product_id_i, sale_price_d!=c_sale_price_d"
> > )
> >
> > I am using solr 6.2.0
> > And the result i get from solr is:
> > {
> > "result-set": {
> > "docs": [
> > {
> > "EXCEPTION": "org.apache.solr.client.solrj.
> io.comp.FieldComparator
> > cannot be cast to
> > org.apache.solr.client.solrj.io.comp.MultipleFieldComparator",
> > "EOF": true
> > }
> > ]
> > }
> > }
> >
> > Do i have to configure something in solr that it knows it has to use
> > MultipleFieldComparator?
> >
> > Regards
> > Max
> >
>
Re: How to use StreamingApi MultiFieldComparator?
Posted by Markko Legonkov <ma...@gmail.com>.
Thanks for quick response
Here is what i tried
complement(
search(
products,
qt="/export",
q="*:*",
fq="product_id_i:15940162",
fl="id, product_id_i, product_name_s,sale_price_d",
sort="product_id_i asc"
),
select(
search(
products,
qt="/export",
q="*:*",
fq="product_id_i:15940162",
fl="id, product_id_i, product_name_s,sale_price_d",
sort="product_id_i asc"
),
id as c_id,
product_id_i as c_product_id_i,
product_name_s as c_product_name_s,
sale_price_d as c_sale_price_d
),
on="product_id_i=c_product_id_i,sale_price_d=c_sale_price_d"
)
but still
{
"result-set": {
"docs": [
{
"EXCEPTION": "org.apache.solr.client.solrj.io.comp.FieldComparator
cannot be cast to
org.apache.solr.client.solrj.io.comp.MultipleFieldComparator",
"EOF": true
}
]
}
}
On Sun, Oct 2, 2016 at 1:26 AM, Joel Bernstein <jo...@gmail.com> wrote:
> Also you'll probably need to specify the /export handler in the search
> expressions, so you get the entire result set.
>
> qt="/export"
>
> Joel Bernstein
> http://joelsolr.blogspot.com/
>
> On Sat, Oct 1, 2016 at 6:08 PM, Joel Bernstein <jo...@gmail.com> wrote:
>
> > Ok, I took a closer look at the expression. I believe this is not
> > supported:
> >
> > sale_price_d!=c_sale_price_d
> >
> > Possibly the complement expression might accomplish what you're trying to
> > do.
> >
> >
> > Joel Bernstein
> > http://joelsolr.blogspot.com/
> >
> > On Sat, Oct 1, 2016 at 5:59 PM, Joel Bernstein <jo...@gmail.com>
> wrote:
> >
> >> Hi can you attach the stack traces in the logs? I'd like to see where
> >> this exception coming, this appears to be a bug.
> >>
> >> I'll also need to dig into your expression and see if there is an issue
> >> with the syntax.
> >>
> >> Joel Bernstein
> >> http://joelsolr.blogspot.com/
> >>
> >> On Sat, Oct 1, 2016 at 2:29 PM, Markko Legonkov <ma...@gmail.com>
> >> wrote:
> >>
> >>> Hi
> >>>
> >>> What i would like to achieve is that i want to filter out all products
> >>> which have different prices on two given dates.
> >>> Here is a sample expression
> >>>
> >>> leftOuterJoin(
> >>> search(
> >>> products,
> >>> q="*:*",
> >>> fq="product_id_i:1 AND product_name_s:test",
> >>> fl="id, product_id_i, product_name_s,sale_price_d",
> >>> sort="product_id_i asc"
> >>> ),
> >>> select(
> >>> search(
> >>> products,
> >>> q="product_id_i:1 AND product_name_s:Test",
> >>> fl="id, product_id_i, product_name_s,sale_price_d",
> >>> sort="product_id_i asc"
> >>> ),
> >>> id as c_id,
> >>> product_id_i as c_product_id_i,
> >>> product_name_s as c_product_name_s,
> >>> sale_price_d as c_sale_price_d
> >>> ),
> >>> on="product_id_i=c_product_id_i, sale_price_d!=c_sale_price_d"
> >>> )
> >>>
> >>> I am using solr 6.2.0
> >>> And the result i get from solr is:
> >>> {
> >>> "result-set": {
> >>> "docs": [
> >>> {
> >>> "EXCEPTION": "org.apache.solr.client.solrj.
> >>> io.comp.FieldComparator
> >>> cannot be cast to
> >>> org.apache.solr.client.solrj.io.comp.MultipleFieldComparator",
> >>> "EOF": true
> >>> }
> >>> ]
> >>> }
> >>> }
> >>>
> >>> Do i have to configure something in solr that it knows it has to use
> >>> MultipleFieldComparator?
> >>>
> >>> Regards
> >>> Max
> >>>
> >>
> >>
> >
>
Re: How to use StreamingApi MultiFieldComparator?
Posted by Joel Bernstein <jo...@gmail.com>.
Also you'll probably need to specify the /export handler in the search
expressions, so you get the entire result set.
qt="/export"
Joel Bernstein
http://joelsolr.blogspot.com/
On Sat, Oct 1, 2016 at 6:08 PM, Joel Bernstein <jo...@gmail.com> wrote:
> Ok, I took a closer look at the expression. I believe this is not
> supported:
>
> sale_price_d!=c_sale_price_d
>
> Possibly the complement expression might accomplish what you're trying to
> do.
>
>
> Joel Bernstein
> http://joelsolr.blogspot.com/
>
> On Sat, Oct 1, 2016 at 5:59 PM, Joel Bernstein <jo...@gmail.com> wrote:
>
>> Hi can you attach the stack traces in the logs? I'd like to see where
>> this exception coming, this appears to be a bug.
>>
>> I'll also need to dig into your expression and see if there is an issue
>> with the syntax.
>>
>> Joel Bernstein
>> http://joelsolr.blogspot.com/
>>
>> On Sat, Oct 1, 2016 at 2:29 PM, Markko Legonkov <ma...@gmail.com>
>> wrote:
>>
>>> Hi
>>>
>>> What i would like to achieve is that i want to filter out all products
>>> which have different prices on two given dates.
>>> Here is a sample expression
>>>
>>> leftOuterJoin(
>>> search(
>>> products,
>>> q="*:*",
>>> fq="product_id_i:1 AND product_name_s:test",
>>> fl="id, product_id_i, product_name_s,sale_price_d",
>>> sort="product_id_i asc"
>>> ),
>>> select(
>>> search(
>>> products,
>>> q="product_id_i:1 AND product_name_s:Test",
>>> fl="id, product_id_i, product_name_s,sale_price_d",
>>> sort="product_id_i asc"
>>> ),
>>> id as c_id,
>>> product_id_i as c_product_id_i,
>>> product_name_s as c_product_name_s,
>>> sale_price_d as c_sale_price_d
>>> ),
>>> on="product_id_i=c_product_id_i, sale_price_d!=c_sale_price_d"
>>> )
>>>
>>> I am using solr 6.2.0
>>> And the result i get from solr is:
>>> {
>>> "result-set": {
>>> "docs": [
>>> {
>>> "EXCEPTION": "org.apache.solr.client.solrj.
>>> io.comp.FieldComparator
>>> cannot be cast to
>>> org.apache.solr.client.solrj.io.comp.MultipleFieldComparator",
>>> "EOF": true
>>> }
>>> ]
>>> }
>>> }
>>>
>>> Do i have to configure something in solr that it knows it has to use
>>> MultipleFieldComparator?
>>>
>>> Regards
>>> Max
>>>
>>
>>
>
Re: How to use StreamingApi MultiFieldComparator?
Posted by Joel Bernstein <jo...@gmail.com>.
Ok, I took a closer look at the expression. I believe this is not supported:
sale_price_d!=c_sale_price_d
Possibly the complement expression might accomplish what you're trying to
do.
Joel Bernstein
http://joelsolr.blogspot.com/
On Sat, Oct 1, 2016 at 5:59 PM, Joel Bernstein <jo...@gmail.com> wrote:
> Hi can you attach the stack traces in the logs? I'd like to see where this
> exception coming, this appears to be a bug.
>
> I'll also need to dig into your expression and see if there is an issue
> with the syntax.
>
> Joel Bernstein
> http://joelsolr.blogspot.com/
>
> On Sat, Oct 1, 2016 at 2:29 PM, Markko Legonkov <ma...@gmail.com> wrote:
>
>> Hi
>>
>> What i would like to achieve is that i want to filter out all products
>> which have different prices on two given dates.
>> Here is a sample expression
>>
>> leftOuterJoin(
>> search(
>> products,
>> q="*:*",
>> fq="product_id_i:1 AND product_name_s:test",
>> fl="id, product_id_i, product_name_s,sale_price_d",
>> sort="product_id_i asc"
>> ),
>> select(
>> search(
>> products,
>> q="product_id_i:1 AND product_name_s:Test",
>> fl="id, product_id_i, product_name_s,sale_price_d",
>> sort="product_id_i asc"
>> ),
>> id as c_id,
>> product_id_i as c_product_id_i,
>> product_name_s as c_product_name_s,
>> sale_price_d as c_sale_price_d
>> ),
>> on="product_id_i=c_product_id_i, sale_price_d!=c_sale_price_d"
>> )
>>
>> I am using solr 6.2.0
>> And the result i get from solr is:
>> {
>> "result-set": {
>> "docs": [
>> {
>> "EXCEPTION": "org.apache.solr.client.solrj.
>> io.comp.FieldComparator
>> cannot be cast to
>> org.apache.solr.client.solrj.io.comp.MultipleFieldComparator",
>> "EOF": true
>> }
>> ]
>> }
>> }
>>
>> Do i have to configure something in solr that it knows it has to use
>> MultipleFieldComparator?
>>
>> Regards
>> Max
>>
>
>
Re: How to use StreamingApi MultiFieldComparator?
Posted by Joel Bernstein <jo...@gmail.com>.
Hi can you attach the stack traces in the logs? I'd like to see where this
exception coming, this appears to be a bug.
I'll also need to dig into your expression and see if there is an issue
with the syntax.
Joel Bernstein
http://joelsolr.blogspot.com/
On Sat, Oct 1, 2016 at 2:29 PM, Markko Legonkov <ma...@gmail.com> wrote:
> Hi
>
> What i would like to achieve is that i want to filter out all products
> which have different prices on two given dates.
> Here is a sample expression
>
> leftOuterJoin(
> search(
> products,
> q="*:*",
> fq="product_id_i:1 AND product_name_s:test",
> fl="id, product_id_i, product_name_s,sale_price_d",
> sort="product_id_i asc"
> ),
> select(
> search(
> products,
> q="product_id_i:1 AND product_name_s:Test",
> fl="id, product_id_i, product_name_s,sale_price_d",
> sort="product_id_i asc"
> ),
> id as c_id,
> product_id_i as c_product_id_i,
> product_name_s as c_product_name_s,
> sale_price_d as c_sale_price_d
> ),
> on="product_id_i=c_product_id_i, sale_price_d!=c_sale_price_d"
> )
>
> I am using solr 6.2.0
> And the result i get from solr is:
> {
> "result-set": {
> "docs": [
> {
> "EXCEPTION": "org.apache.solr.client.solrj.io.comp.FieldComparator
> cannot be cast to
> org.apache.solr.client.solrj.io.comp.MultipleFieldComparator",
> "EOF": true
> }
> ]
> }
> }
>
> Do i have to configure something in solr that it knows it has to use
> MultipleFieldComparator?
>
> Regards
> Max
>