2017-04-24 62 views
0

所以我有以下问题:沃森检索和排名服务不返回任何搜索结果,并试图培养排序器自定义时,Solr的错误特色

当我尝试使用我已经训练排名器来搜索我得到以下错误信息:

pysolr.SolrError: Solr responded with an error (HTTP 500): [Reason: Can not rerank results. Verify that your schema has not changed in incompatible ways.] 

这是我要求的结果:

pysolr_client._send_request("GET", path='/fcselect?q=%s&ranker_id=%s&wt=json' % (Question, ranker_id)) 

当我试图不通过Python的,而是通过卷曲我碰到下面的做错误:

{"responseHeader":{"status":400,"QTime":1},"error":{"metadata":["error-class","org.apache.solr.common.SolrException","root-error-class","org.apache.solr.common.SolrException"],"msg":"Bad contentType for search handler :application/octet-stream request=...}","code":400}} 

(我遗漏了请求本身不在此处发布排名标识)。

我发送的卷曲请求如下:

curl -X POST -u "*username*":"*password*" "https://gateway.watsonplatform.net/retrieve-and-rank/api/v1/solr_clusters/*solr_cluster_id*/solr/Question_collection/fcselect?ranker_id=*ranker_id*&q=*question*?&wt=json" 

我发现下面的解决卷曲:只需添加一个-H "Content-Type: application/json"的,那么,它让我看到了一些文件,结果,但在年底它的响应仍然显示相同的错误。此外,我看到下面的跟踪:

org.apache.solr.common.SolrException: Can not rerank results. Verify that your schema has not changed in incompatible ways. 
at com.ibm.watson.hector.plugins.utils.ExceptionHandlingUtil.logAndThrowSolrException(ExceptionHandlingUtil.java:36) 
at com.ibm.watson.hector.plugins.ss.FCFeatureGeneratorComponent.rerank(FCFeatureGeneratorComponent.java:743) 
at com.ibm.watson.hector.plugins.ss.FCFeatureGeneratorComponent.process(FCFeatureGeneratorComponent.java:348) 
at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:272) 
at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:155) 
at org.apache.solr.core.SolrCore.execute(SolrCore.java:2102) 
at org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:654) 
at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:460) 
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:1652) 
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585) 
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) 
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577) 
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223) 
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127) 
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515) 
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) 
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061) 
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) 
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215) 
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110) 
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) 
at org.eclipse.jetty.server.Server.handle(Server.java:499) 
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310) 
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257) 
at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540) 
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) 
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) 
at java.lang.Thread.run(Thread.java:745) 

的问题是,训练排序器并使用它之间我还没有碰到任何东西。不是模式,不是集合,也不是名称。我只有一个集合,一个配置,其中一个,除了文档之外 - 其中有294个。

我所经历的整个过程都是为没有自定义功能的排行榜工作的。但用自定义功能它没有。

我已经通过本教程去创造我的沃森排行器使用自定义功能:https://medium.com/machine-learning-with-ibm-watson/developing-with-ibm-watson-retrieve-and-rank-part-3-custom-features-826fe88a5c63

据我了解我所做的一切感谢这个教程改变trainingdata.txt文件,训练过程是相同的。

现在我已经江郎才尽了什么检查来解决这个问题..

你有什么建议吗?

非常感谢! :)

+0

500是服务器错误,您是否可以访问Solr日志? 看一下堆栈跟踪,你应该得到解决方案的有用提示! –

+0

好问题!从未使用Solr日志.. 我添加了原始帖子的痕迹。现在尝试做一些感觉:) – Nikita

+0

恐怕com.ibm.watson.hector.plugins不是开源的,这限制了我们的帮助潜力,除非源代码可用... –

回答

1

这是在rr_custom_scorer_proxy的server.py中的一个愚蠢的事情。当它写入必须由排名器重新排名的'answer'csv时,它会以'wt'模式打开文件,这会导致每行之间出现空行。这不能由排名处理,我们得到一个错误。

如果您将其更改为'wb',那么该功能很有用。