sclass ScoredSearcher {
int maxResults = 1000;
LS preparedTerms;
new Map scores;
*(S query, O... _) {
maxResults = optPar maxResults(_, maxResults);
preparedTerms = scoredSearch_prepare(query);
}
void put(A object, Collection fields) {
scores.put(object, scoredSearch_score(fields, preparedTerms));
}
L get() {
ret takeFirst(maxResults, keysSortedByValuesDesc(scores));
}
}