solr查询异常!怎么回事?

时间:2013-11-21 15:42:00

标签: solr

我在我的网站上使用solr 4.3, 我更喜欢这个函数查询一个数据, 有时候会出现这种情况:

org.apache.solr.common.SolrException: parsing error
    at org.apache.solr.client.solrj.impl.BinaryResponseParser.processResponse(BinaryResponseParser.java:43)
    at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:385)
    at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:180)
    at org.apache.solr.client.solrj.request.QueryRequest.process(QueryRequest.java:90)
    at org.apache.solr.client.solrj.SolrServer.query(SolrServer.java:301)

解析错误?? 它怎么样 ? 为什么会发生? 谢谢你的回复。

此代码: 代码:

public MoreLikeThisQueryResponse(QueryResponse queryResponse) {
    this.queryResponse = queryResponse;

    NamedList<Object> res = this.queryResponse.getResponse();
    for (int i = 0; i < res.size(); i++) {
      String name = res.getName(i);
      if ("match".equals(name)) {
        this.matchResult = (SolrDocumentList) res.getVal(i);
      }
    }
  }

2 个答案:

答案 0 :(得分:0)

这种类型的&#34;解析错误&#34;在BinaryResponseParser.processResponse方法中,通常表示服务器正在返回原始HTML文本响应而不是Solr javabin响应。通常,这意味着服务器容器(Tomcat或Jetty)在Solr有机会处理错误并遵守将参数格式设置为javabin的wt参数之前检测并报告错误。

检查服务器日志中的实际错误。

答案 1 :(得分:0)

我遇到了类似的问题。

似乎可能存在兼容性错误,因为您没有使用Solr和Solrj的EXACT兼容版本。

要解决此问题,您必须指定

server.setParser(new XMLResponseParser());

引自Solrj

  

SolrJ通常保持向后兼容性,因此您可以使用较新的SolrJ与较旧的Solr,或较旧的SolrJ与较新的Solr。这个一般规则有一些小的例外:

     

如果要混合1.x和更高版本的主要版本,则必须将响应解析器设置为XML,因为这两个版本使用不兼容的javabin版本。