Исключение приведения класса при запросе SOLR - PullRequest
0 голосов
/ 08 марта 2019

Я получаю следующее исключение при попытке запросить мою отдельную коллекцию SOLR 7.5.0.Я не уверен, где проблема или как идти об устранении неполадок.В настоящее время я использую зависимости solr 7.5.0 в своем проекте maven, и я пытался использовать 7.6.0 и 7.4.0, и они выдают то же исключение.Я ищу другие вещи, чтобы попытаться выяснить, где проблема и как обойти ее.

Строка, которая вызывает исключение, это

QueryResponse resp = httpSolrClient.query(query, METHOD.GET );

Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to org.apache.solr.common.SolrDocumentList
    at org.apache.solr.client.solrj.response.QueryResponse.setResponse(QueryResponse.java:126)
    at org.apache.solr.client.solrj.SolrRequest.process(SolrRequest.java:194)
    at org.apache.solr.client.solrj.SolrClient.query(SolrClient.java:974)
    at org.apache.solr.client.solrj.SolrClient.query(SolrClient.java:990)
    at com.leidos.textanalysis.solr.QuerySolr.main(QuerySolr.java:28)

Ниже приведен код, который вызывает его, и никакие изменения не привели к какому-либо изменению результатов.

public static void main(String[] args) throws Exception {
    // TODO Auto-generated method stub
    NoOpResponseParser responseParser = new NoOpResponseParser();
    responseParser.setWriterType("xml");

    HttpSolrClient.Builder builder = new HttpSolrClient.Builder();
    builder.withBaseSolrUrl("http://host:8983/solr/collection");

    RequestWriter writer = new RequestWriter();
    HttpSolrClient httpSolrClient = builder. build();
    httpSolrClient.setRequestWriter(writer);
    httpSolrClient.setParser(responseParser); 
    //message score
    SolrQuery query =new SolrQuery("*:*"); 

    QueryResponse resp = httpSolrClient.query(query, METHOD.GET ); //Exception thrown here

    SolrDocumentList theList =  resp.getResults();
    SolrDocument test = theList.get(0);
    System.out.println(test.toString());
}

Глядя на исходный код QueryResponse в solr, мы можем увидеть проблемуздесь, где он приводит к SolrDocumentList.Я не могу найти способ обойти это или исправить это.Я ищу вещи, чтобы попробовать и варианты для устранения проблем больше.Спасибо.

public void setResponse( NamedList<Object> res )  {
super.setResponse( res );

// Look for known things
for( int i=0; i<res.size(); i++ ) {
  String n = res.getName( i );
  if( "responseHeader".equals( n ) ) {
    _header = (NamedList<Object>) res.getVal( i );
  }
  else if( "response".equals( n ) ) {
    _results = (SolrDocumentList) res.getVal( i ); //Exception thrown Here 
  }
  else if( "sort_values".equals( n ) ) {
    _sortvalues = (NamedList<ArrayList>) res.getVal( i );
  }
  else if( "facet_counts".equals( n ) ) {
    _facetInfo = (NamedList<Object>) res.getVal( i );
    // extractFacetInfo inspects _results, so defer calling it
    // in case it hasn't been populated yet.
  }
  else if( "debug".equals( n ) ) {
    _debugInfo = (NamedList<Object>) res.getVal( i );
    extractDebugInfo( _debugInfo );
  }
  else if( "grouped".equals( n ) ) {
    _groupedInfo = (NamedList<Object>) res.getVal( i );
    extractGroupedInfo( _groupedInfo );
  }
  else if("expanded".equals(n)) {
    NamedList map = (NamedList) res.getVal(i);
    _expandedResults = map.asMap(1);
  }
  else if( "highlighting".equals( n ) ) {
    _highlightingInfo = (NamedList<Object>) res.getVal( i );
    extractHighlightingInfo( _highlightingInfo );
  }
  else if ( "spellcheck".equals( n ) )  {
    _spellInfo = (NamedList<Object>) res.getVal( i );
    extractSpellCheckInfo( _spellInfo );
  }
  else if ("clusters".equals(n)) {
    _clusterInfo = (ArrayList<NamedList<Object>>) res.getVal(i);
    extractClusteringInfo(_clusterInfo);
  }
  else if ( "suggest".equals( n ) )  {
    _suggestInfo = (Map<String,NamedList<Object>>) res.getVal( i );
    extractSuggesterInfo(_suggestInfo);
  }
  else if ( "stats".equals( n ) )  {
    _statsInfo = (NamedList<Object>) res.getVal( i );
    extractStatsInfo( _statsInfo );
  }
  else if ( "terms".equals( n ) ) {
    _termsInfo = (NamedList<NamedList<Object>>) res.getVal( i );
    extractTermsInfo( _termsInfo );
  }
  else if ( "moreLikeThis".equals( n ) ) {
    _moreLikeThisInfo = (NamedList<SolrDocumentList>) res.getVal( i );
  }
  else if ( CursorMarkParams.CURSOR_MARK_NEXT.equals( n ) ) {
    _cursorMarkNext = (String) res.getVal( i );
  }
}
if(_facetInfo != null) extractFacetInfo( _facetInfo );

}

...