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 Martin Ruderer <ma...@freiheit.com> on 2019/08/12 19:44:57 UTC

ltr (reranking) in combination with cursorMarks

Hello,

I am trying to use ltr together with cursorMarks on solr 7.7 and I am
getting the exception java.lang.ClassCastException:
org.apache.lucene.search.TopDocs cannot be cast to
org.apache.lucene.search.TopFieldDocs (full stacktrace below).

Browsing Jira I have found an issue that suggests I should always
include sort by score when combining reranking with cursorMarks.
However, that hasn't changed anything.

Is there anything I am missing?

o.a.s.s.HttpSolrCall null:java.lang.ClassCastException:
org.apache.lucene.search.TopDocs cannot be cast to
org.apache.lucene.search.TopFieldDocs
    at org.apache.solr.search.SolrIndexSearcher.populateNextCursorMarkFromTopDocs(SolrIndexSearcher.java:1458)
    at org.apache.solr.search.SolrIndexSearcher.getDocListAndSetNC(SolrIndexSearcher.java:1686)
    at org.apache.solr.search.SolrIndexSearcher.getDocListC(SolrIndexSearcher.java:1395)
    at org.apache.solr.search.SolrIndexSearcher.search(SolrIndexSearcher.java:566)
    at org.apache.solr.handler.component.QueryComponent.process(QueryComponent.java:545)
    at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:296)
    at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:173)
    at org.apache.solr.core.SolrCore.execute(SolrCore.java:2477)
    at org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:724)
    at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:530)
    at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:361)
    at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:305)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1691)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:582)
    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:1180)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112)
    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.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:335)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
    at org.eclipse.jetty.server.Server.handle(Server.java:534)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320)
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251)
    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.executeProduceConsume(ExecuteProduceConsume.java:303)
    at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148)
    at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589)
    at java.lang.Thread.run(Thread.java:748)

Best regards,
Martin Ruderer
-- 
Martin Ruderer
Dr. rer. nat. Dipl.-Math.

freiheit.com technologies gmbh
Budapester Straße 45
20359 Hamburg / Germany
fon: +49 40 / 890584-0
Hamburg HRB 70814

+++ Hamburg/ Germany + Lisbon/ Portugal +++

https://www.freiheit.com
https://www.facebook.com/freiheitcom

B444 034F 9C95 A569 C5DA  087C E6B9 CCF9 5572 A904
Geschäftsführer: Claudia Dietze, Stefan Richter

Re: ltr (reranking) in combination with cursorMarks

Posted by Dmitry Kan <so...@gmail.com>.
Hi Martin,

I've ran into the same issue and the only solution that worked was to fall
back to (less efficient) start & rows parameters. Can you consider filing a
jira?

Thanks,

Dmitry

On Mon, Aug 12, 2019 at 10:45 PM Martin Ruderer <ma...@freiheit.com>
wrote:

> Hello,
>
> I am trying to use ltr together with cursorMarks on solr 7.7 and I am
> getting the exception java.lang.ClassCastException:
> org.apache.lucene.search.TopDocs cannot be cast to
> org.apache.lucene.search.TopFieldDocs (full stacktrace below).
>
> Browsing Jira I have found an issue that suggests I should always
> include sort by score when combining reranking with cursorMarks.
> However, that hasn't changed anything.
>
> Is there anything I am missing?
>
> o.a.s.s.HttpSolrCall null:java.lang.ClassCastException:
> org.apache.lucene.search.TopDocs cannot be cast to
> org.apache.lucene.search.TopFieldDocs
>     at
> org.apache.solr.search.SolrIndexSearcher.populateNextCursorMarkFromTopDocs(SolrIndexSearcher.java:1458)
>     at
> org.apache.solr.search.SolrIndexSearcher.getDocListAndSetNC(SolrIndexSearcher.java:1686)
>     at
> org.apache.solr.search.SolrIndexSearcher.getDocListC(SolrIndexSearcher.java:1395)
>     at
> org.apache.solr.search.SolrIndexSearcher.search(SolrIndexSearcher.java:566)
>     at
> org.apache.solr.handler.component.QueryComponent.process(QueryComponent.java:545)
>     at
> org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:296)
>     at
> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:173)
>     at org.apache.solr.core.SolrCore.execute(SolrCore.java:2477)
>     at org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:724)
>     at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:530)
>     at
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:361)
>     at
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:305)
>     at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1691)
>     at
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:582)
>     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:1180)
>     at
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512)
>     at
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
>     at
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112)
>     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.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:335)
>     at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
>     at org.eclipse.jetty.server.Server.handle(Server.java:534)
>     at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320)
>     at
> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251)
>     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.executeProduceConsume(ExecuteProduceConsume.java:303)
>     at
> org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148)
>     at
> org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136)
>     at
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671)
>     at
> org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589)
>     at java.lang.Thread.run(Thread.java:748)
>
> Best regards,
> Martin Ruderer
> --
> Martin Ruderer
> Dr. rer. nat. Dipl.-Math.
>
> freiheit.com technologies gmbh
> Budapester Straße 45
> 20359 Hamburg / Germany
> fon: +49 40 / 890584-0
> Hamburg HRB 70814
>
> +++ Hamburg/ Germany + Lisbon/ Portugal +++
>
> https://www.freiheit.com
> https://www.facebook.com/freiheitcom
>
> B444 034F 9C95 A569 C5DA  087C E6B9 CCF9 5572 A904
> Geschäftsführer: Claudia Dietze, Stefan Richter
>


-- 
Dmitry Kan
Luke Toolbox: http://github.com/DmitryKey/luke
Blog: http://dmitrykan.blogspot.com
Twitter: http://twitter.com/dmitrykan
SemanticAnalyzer: https://semanticanalyzer.info