2013-11-21 44 views
0

我的Solr 4.3使用我的網站, WHIE我查詢一個數據與morelike此功能, 有時此異常熄滅:solr查詢異常!這是怎麼回事?

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

在獲取結果之前,您發送給Solr的請求是什麼?這很可能是導致解析異常的原因。 – cheffe

回答

0

這種類型在BinaryResponseParser.processResponse方法「分析錯誤」的通常表示服務器返回一個原始HTML文本響應,而不是一個Solr的javabin響應。通常,這意味着服務器容器(Tomcat或Jetty)在Solr有機會處理錯誤並服從wt參數(將響應格式設置爲javabin)之前檢測並報告錯誤。

檢查服務器日誌中的實際錯誤。

0

我有類似的問題。

看來可能存在兼容性錯誤是您沒有使用Solr和Solrj的EXACT兼容版本。

要解決這個問題,你必須指定

server.setParser(new XMLResponseParser()); 

Solrj

SolrJ報價一般向後保持兼容,所以你可以使用一個新的SolrJ與舊Solr的,或舊的SolrJ與一個更新的Solr。這個通用規則有一些小的例外:

如果您將1.x和更高版本混合使用,則必須將響應解析器設置爲XML,因爲這兩個版本使用不兼容的javabin版本。