package com.gisgraphy.fulltext;
import java.util.List;
import java.util.Map;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.client.solrj.response.SpellCheckResponse;
import org.apache.solr.client.solrj.response.SpellCheckResponse.Suggestion;
public class FulltextResultDtoBuilder {
/**
* @param response
* The {@link QueryResponse} to build the DTO
*/
public FulltextResultsDto build(QueryResponse response) {
FulltextResultsDto fulltextResultDto = new FulltextResultsDto();
fulltextResultDto.results = SolrUnmarshaller.unmarshall(response);
fulltextResultDto.QTime = response.getQTime();
fulltextResultDto.numFound = response.getResults().getNumFound();
fulltextResultDto.maxScore = response.getResults().getMaxScore();
fulltextResultDto.resultsSize = fulltextResultDto.results == null ? 0 : fulltextResultDto.results.size();
SpellCheckResponse spellCheckResponse = response.getSpellCheckResponse();
if (spellCheckResponse != null) {
Map<String, Suggestion> suggestionMapInternal = spellCheckResponse.getSuggestionMap();
if (suggestionMapInternal != null) {
for (String key: suggestionMapInternal.keySet()){
Suggestion suggestion = suggestionMapInternal.get(key);
fulltextResultDto.suggestionMap.put(key, suggestion.getAlternatives());
}
}
if (spellCheckResponse.getCollatedResult() != null) {
fulltextResultDto.collatedResult = spellCheckResponse.getCollatedResult().trim();
}
List<Suggestion> suggestions = spellCheckResponse.getSuggestions();
if (suggestions.size() != 0) {
StringBuffer sb = new StringBuffer();
for (Suggestion suggestion : suggestions) {
sb.append(suggestion.getSuggestions().get(0)).append(" ");
}
fulltextResultDto.spellCheckProposal = sb.toString().trim();
}
}
return fulltextResultDto;
}
}