private List<OntologyTerm> processOntologyTermHits( final QueryResponse queryResponse, final String id, final String termIdKey, final String termNameKey, final String termSynonymsKey) throws SolrServerException { final SolrDocumentList results = queryResponse.getResults(); List<OntologyTerm> terms = new ArrayList<OntologyTerm>( results.size() ); List<String> processedIds = new ArrayList<String>( results.size() + 1 ); processedIds.add(id); for ( SolrDocument solrDocument : results ) { String parentId = (String) solrDocument.getFieldValue( termIdKey ); String parentName = (String) solrDocument.getFieldValue( termNameKey ); Collection<Object> fieldValues = solrDocument.getFieldValues(termSynonymsKey); Set<OntologyTerm> synonyms = new HashSet<OntologyTerm>(); if (parentId != null && fieldValues != null) { for (Object fieldValue : fieldValues) { synonyms.add(new LazyLoadedOntologyTerm(searcher, parentId, fieldValue.toString(), Collections.EMPTY_SET)); } } if (parentId != null && !processedIds.contains(parentId)) { terms.add(newInternalOntologyTerm(searcher, parentId, parentName, synonyms)); processedIds.add(parentId); } } return terms; }