Revision 786696e3
Added by Andreas Müller over 10 years ago
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/search/SearchResultBuilder.java | ||
---|---|---|
197 | 197 |
return searchResults; |
198 | 198 |
} |
199 | 199 |
|
200 |
|
|
201 |
/** |
|
202 |
* {@inheritDoc} |
|
203 |
* |
|
204 |
*/ |
|
205 |
public List<DocumentSearchResult> createResultSet(TopDocs topDocs, String[] highlightFields) throws CorruptIndexException, IOException { |
|
206 |
|
|
207 |
List<DocumentSearchResult> searchResults = new ArrayList<DocumentSearchResult>(); |
|
208 |
|
|
209 |
if(topDocs == null){ |
|
210 |
return searchResults; |
|
211 |
} |
|
212 |
|
|
213 |
SearchResultHighligther highlighter = null; |
|
214 |
if(highlightFields != null && highlightFields.length > 0){ |
|
215 |
highlighter = new SearchResultHighligther(); |
|
216 |
} |
|
217 |
|
|
218 |
for (ScoreDoc scoreDoc : topDocs.scoreDocs) { |
|
219 |
|
|
220 |
String cdmEntityId = null; |
|
221 |
DocumentSearchResult searchResult = new DocumentSearchResult(); |
|
222 |
|
|
223 |
Document document = luceneSearch.getSearcher().doc(scoreDoc.doc); |
|
224 |
searchResult.addDoc(document); |
|
225 |
|
|
226 |
searchResult.setScore(scoreDoc.score); |
|
227 |
searchResult.setMaxScore(scoreDoc.score); |
|
228 |
// add highlight fragments |
|
229 |
if(highlighter != null){ |
|
230 |
Map<String, String[]> fieldFragmentMap = null; |
|
231 |
for(Document doc: searchResult.getDocs()){ |
|
232 |
fieldFragmentMap = merge(fieldFragmentMap, highlighter.getFragmentsWithHighlightedTerms(luceneSearch.getAnalyzer(), query, highlightFields, doc, fragmentNumber, fragmentSize)); |
|
233 |
} |
|
234 |
searchResult.setFieldHighlightMap(fieldFragmentMap); |
|
235 |
} |
|
236 |
|
|
237 |
// finally add the final result to the list |
|
238 |
searchResults.add(searchResult); |
|
239 |
} |
|
240 |
|
|
241 |
return searchResults; |
|
242 |
} |
|
200 | 243 |
/** |
201 | 244 |
* @param base |
202 | 245 |
* @param add |
Also available in: Unified diff
merge trunk into cdm3.3 branch