我在我的网站上使用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);
}
}
}
答案 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版本。