Solrj com Solr Suggester

Qual é a maneira correta de obter resultados de solrj usando Solr Suggester?

Este é o meu pedido:

SolrQuery query = new SolrQuery(); query.setRequestHandler("/suggest"); query.setParam("suggest", "true"); query.setParam("suggest.build", "true"); query.setParam("suggest.dictionary", "mySuggester"); query.setParam("suggest.q", "So"); QueryResponse response = server.query(query); 

No entanto, achei extremamente difícil obter a resposta. A maneira como obtive a resposta é com isso:

 NamedList obj = (NamedList)((Map)response.getResponse().get("suggest")).get("mySuggester"); SimpleOrderedMap obj2 = (SimpleOrderedMap) obj.get("So"); List obj3 = (List) obj2.get("suggestions"); 

Isso parece assumir muito sobre os objects que estou recebendo da resposta e será difícil prever erros.

Existe uma maneira melhor e mais limpa do que isso?

A melhor opção é obtê-lo como List, abaixo o código funcionou para mim

  HttpSolrClient solrClient = new HttpSolrClient(solrURL); SolrQuery query = new SolrQuery(); query.setRequestHandler("/suggest"); query.setParam("suggest.q", "Ins"); query.setParam("wt", "json"); try { QueryResponse response = solrClient.query(query); System.out.println(response.getSuggesterResponse().getSuggestedTerms()); List types=response.getSuggesterResponse().getSuggestedTerms().get("infixSuggester"); System.out.println(types); } catch (SolrServerException | IOException e) { e.printStackTrace(); } 

Você pode obter as sugestões através do SpellCheckResponse , fazendo o seguinte

 SpellCheckResponse spellCheckResponse=response.getSpellCheckResponse(); 

Confira este link para mais detalhes